|
| 3x3 felt skal udfyldes Fra : StoneWare |
Dato : 15-08-05 15:17 |
|
Jeg skal have en 3x3 firkant ( altså 9 felter ) udfyldt med tallene fra1 til
9
og der må ikke være 2 ens tal i firkanten...........og jeg skal bruge alle
kombinationer....altså 362.880 kombinationer.............. det må gerne være
som en string ... eks "123456789" eller måske eks. "abcdefghi" gemt i et
array !!
Nogle der kan klare den ??
| |
Karsten Madsen (15-08-2005)
| Kommentar Fra : Karsten Madsen |
Dato : 15-08-05 17:51 |
|
"StoneWare" <HejMedDig@NoSpam.Net> skrev i en meddelelse
news:4300a3f6$0$43417$edfadb0f@dread12.news.tele.dk...
> Jeg skal have en 3x3 firkant ( altså 9 felter ) udfyldt med tallene fra1
> til 9
> og der må ikke være 2 ens tal i firkanten...........og jeg skal bruge alle
> kombinationer....altså 362.880 kombinationer.............. det må gerne
> være som en string ... eks "123456789" eller måske eks. "abcdefghi" gemt
> i et array !!
>
> Nogle der kan klare den ??
Tæl fra 123456789 til 987654321, hvis tværsum er lig 45 så skal tallet
listes.
| |
Gert Krabsen (15-08-2005)
| Kommentar Fra : Gert Krabsen |
Dato : 15-08-05 19:50 |
|
Mon, 15 Aug 2005 18:51:10 +0200, Karsten Madsen <km@x.dk> skrev:
>
> "StoneWare" <HejMedDig@NoSpam.Net> skrev i en meddelelse
> news:4300a3f6$0$43417$edfadb0f@dread12.news.tele.dk...
>> Jeg skal have en 3x3 firkant ( altså 9 felter ) udfyldt med tallene fra
>> 1 til 9
>> og der må ikke være 2 ens tal i firkanten...........og jeg skal bruge
>> alle
>> kombinationer....altså 362.880 kombinationer.............. det må gerne
>> være som en string ... eks "123456789" eller måske eks. "abcdefghi"
>> gemt
>> i et array !!
>>
>> Nogle der kan klare den ??
>
> Tæl fra 123456789 til 987654321, hvis tværsum er lig 45 så skal tallet
> listes.
>
Hvad så med 555555555? ..eller 323258589? ..eller.. ?
Det er ikke helt så enkelt
Men hvis det kun er et spørgsmål om een gang for alle at lave listen, så
er det da et sjovt lille program, som det kunne være fristende at pusle
med i en stille stund og så lade køre natten over.
mvh
Krabsen
--
Sendt via Opera.
www.krabsen.dk
www.responsnord.dk
mfl
| |
StoneWare (15-08-2005)
| Kommentar Fra : StoneWare |
Dato : 15-08-05 20:47 |
|
"Gert Krabsen" <news@fjernkrabsenfjernes.dk> skrev i en meddelelse
news svkbxcqr0p03yo@news.sunsite.auc.dk...
> Mon, 15 Aug 2005 18:51:10 +0200, Karsten Madsen <km@x.dk> skrev:
>
>>
>> "StoneWare" <HejMedDig@NoSpam.Net> skrev i en meddelelse
>> news:4300a3f6$0$43417$edfadb0f@dread12.news.tele.dk...
>>> Jeg skal have en 3x3 firkant ( altså 9 felter ) udfyldt med tallene fra
>>> 1 til 9
>>> og der må ikke være 2 ens tal i firkanten...........og jeg skal bruge
>>> alle
>>> kombinationer....altså 362.880 kombinationer.............. det må gerne
>>> være som en string ... eks "123456789" eller måske eks. "abcdefghi"
>>> gemt
>>> i et array !!
>>>
>>> Nogle der kan klare den ??
>>
>> Tæl fra 123456789 til 987654321, hvis tværsum er lig 45 så skal tallet
>> listes.
>>
>
> Hvad så med 555555555? ..eller 323258589? ..eller.. ?
>
> Det er ikke helt så enkelt
>
>
>
> Men hvis det kun er et spørgsmål om een gang for alle at lave listen, så
> er det da et sjovt lille program, som det kunne være fristende at pusle
> med i en stille stund og så lade køre natten over.
>
Det skal kun lave listen en gang for alle !!
>
> mvh
>
> Krabsen
>
>
>
>
> --
> Sendt via Opera.
> www.krabsen.dk
> www.responsnord.dk
> mfl
| |
Karsten Madsen (15-08-2005)
| Kommentar Fra : Karsten Madsen |
Dato : 15-08-05 21:06 |
|
"StoneWare" <HejMedDig@NoSpam.Net> skrev i en meddelelse
news:4300f120$0$37053$edfadb0f@dread12.news.tele.dk...
>
> "Gert Krabsen" <news@fjernkrabsenfjernes.dk> skrev i en meddelelse
> news svkbxcqr0p03yo@news.sunsite.auc.dk...
>> Mon, 15 Aug 2005 18:51:10 +0200, Karsten Madsen <km@x.dk> skrev:
>>
>>>
>>> "StoneWare" <HejMedDig@NoSpam.Net> skrev i en meddelelse
>>> news:4300a3f6$0$43417$edfadb0f@dread12.news.tele.dk...
>>>> Jeg skal have en 3x3 firkant ( altså 9 felter ) udfyldt med tallene fra
>>>> 1 til 9
>>>> og der må ikke være 2 ens tal i firkanten...........og jeg skal bruge
>>>> alle
>>>> kombinationer....altså 362.880 kombinationer.............. det må gerne
>>>> være som en string ... eks "123456789" eller måske eks. "abcdefghi"
>>>> gemt
>>>> i et array !!
>>>>
>>>> Nogle der kan klare den ??
>>>
>>> Tæl fra 123456789 til 987654321, hvis tværsum er lig 45 så skal tallet
>>> listes.
>> Hvad så med 555555555? ..eller 323258589? ..eller.. ?
>> Det er ikke helt så enkelt
>> Men hvis det kun er et spørgsmål om een gang for alle at lave listen, så
>> er det da et sjovt lille program, som det kunne være fristende at pusle
>> med i en stille stund og så lade køre natten over.
> Det skal kun lave listen en gang for alle !!
Så må det være tæl fra 123456789 til 987654321 og
Hvis et tal er 45 så
gennemse tallet tal for tal om to tal er ens.
3 løkker inde i hinanden.
Jeg pusler lige et vb5 sammen (har kun vb5 desværre)
/karsten
| |
Karsten Madsen (15-08-2005)
| Kommentar Fra : Karsten Madsen |
Dato : 15-08-05 21:04 |
|
"Gert Krabsen" <news@fjernkrabsenfjernes.dk> skrev i en meddelelse
news svkbxcqr0p03yo@news.sunsite.auc.dk...
> Mon, 15 Aug 2005 18:51:10 +0200, Karsten Madsen <km@x.dk> skrev:
>
>>
>> "StoneWare" <HejMedDig@NoSpam.Net> skrev i en meddelelse
>> news:4300a3f6$0$43417$edfadb0f@dread12.news.tele.dk...
>>> Jeg skal have en 3x3 firkant ( altså 9 felter ) udfyldt med tallene fra
>>> 1 til 9
>>> og der må ikke være 2 ens tal i firkanten...........og jeg skal bruge
>>> alle
>>> kombinationer....altså 362.880 kombinationer.............. det må gerne
>>> være som en string ... eks "123456789" eller måske eks. "abcdefghi"
>>> gemt
>>> i et array !!
>>>
>>> Nogle der kan klare den ??
>>
>> Tæl fra 123456789 til 987654321, hvis tværsum er lig 45 så skal tallet
>> listes.
>>
>
> Hvad så med 555555555? ..eller 323258589? ..eller.. ?
> Det er ikke helt så enkelt
>
DOH ! (med homer accent)
/karsten
| |
Karsten Madsen (15-08-2005)
| Kommentar Fra : Karsten Madsen |
Dato : 15-08-05 21:26 |
|
Private Sub Command1_Click()
List1.Clear
For a = Val(Text1.Text) To Val(Text2.Text)
b$ = Str$(a)
c = 0
For d = 1 To 9
c = c + Val(Mid$(b$, d + 1, 1))
Next d
If c = 45 Then
ens = False
For d = 1 To 9
For e = d + 1 To 9
If Val(Mid$(b$, e + 1, 1)) = Val(Mid$(b$, d + 1, 1))
Then
ens = True
End If
Next e
Next d
If Not ens Then List1.AddItem b$
End If
Next a
End Sub
| |
Karsten Madsen (15-08-2005)
| Kommentar Fra : Karsten Madsen |
Dato : 15-08-05 21:35 |
|
"Karsten Madsen" <km@x.dk> skrev i en meddelelse
news:4300fa62$0$75422$edfadb0f@dread16.news.tele.dk...
> Private Sub Command1_Click()
>
>
> End Sub
>
Glemte lige
En form med List1, Command1 og Text1 og Text2
Text1 holder starttal (123456789)
Text2 holder sluttal (98765432) har dog kun prøvet med (124000000)
mvh
Karsten
| |
StoneWare (16-08-2005)
| Kommentar Fra : StoneWare |
Dato : 16-08-05 10:29 |
|
"Karsten Madsen" <km@x.dk> skrev i en meddelelse
news:4300fc81$0$15656$edfadb0f@dread16.news.tele.dk...
>
> "Karsten Madsen" <km@x.dk> skrev i en meddelelse
> news:4300fa62$0$75422$edfadb0f@dread16.news.tele.dk...
>> Private Sub Command1_Click()
>>
>>
>> End Sub
>>
> Glemte lige
> En form med List1, Command1 og Text1 og Text2
> Text1 holder starttal (123456789)
> Text2 holder sluttal (98765432) har dog kun prøvet med (124000000)
>
> mvh
> Karsten
Tak Karsten...............meget fin rutine..........jeg fik selv lavet en
igår aftes som gemmer alle 362.880 kombinationer i en fil ved at gennemgå
alle
387.420.489 kombinationer..........det tog ca 2½ time
Private Sub Command1_Click()
For a = 1 To 9
For b = 1 To 9
For c = 1 To 9
For d = 1 To 9
For e = 1 To 9
For f = 1 To 9
For g = 1 To 9
For h = 1 To 9
For i = 1 To 9
DoEvents
Sod = Sod & Chr(64 + a)
Sod = Sod & Chr(64 + b)
Sod = Sod & Chr(64 + c)
Sod = Sod & Chr(64 + d)
Sod = Sod & Chr(64 + e)
Sod = Sod & Chr(64 + f)
Sod = Sod & Chr(64 + g)
Sod = Sod & Chr(64 + h)
Sod = Sod & Chr(64 + i)
Ch = 65: Bad = False
Do Until Ch = 74 Or Bad = True
Test = Chr(Ch): AA = 0
For z = 1 To 9
If Mid(Sod, z, 1) = Test Then AA = AA + 1
Next z
If AA <> 1 Then Bad = True
Ch = Ch + 1
Loop
If Bad = False Then
Open "c:\download\Sod.txt" For Append As #1
Print #1, Sod
Close #1
End If
Sod = ""
Next i
Next h
Next g
Next f
Next e
Next d
Next c
Next b
Next a
End Sub
>
>
| |
Harald Staff (18-08-2005)
| Kommentar Fra : Harald Staff |
Dato : 18-08-05 17:58 |
|
Hei
Med "ikke to ens" er det ikke combinations, men permutations, det er tale
om. denne genererer dem alle:
Sub test()
Call GetPermutation("", "123456789")
End Sub
Sub GetPermutation(x As String, y As String)
' The source of this algorithm is unknown
Dim i As Integer, j As Integer
j = Len(y)
If j < 2 Then
Debug.Print x & y
Else
For i = 1 To j
Call GetPermutation(x + Mid(y, i, 1), _
Left(y, i - 1) + Right(y, j - i))
Next
End If
End Sub
Men skal du bare generere en tilfeldig stokket rekkefølge av kjente unike
størrelser, tilordne hver enhet et tilfeldig tal og sorter så efter det:
Type Verdi
S As String
D As Double
End Type
Sub Test2()
Dim Verdier(1 To 9) As Verdi
Dim i As Long, j As Long
Dim Tmp As Verdi
Dim L As Long
Randomize
'generer:
For L = 1 To 9
Verdier(L).S = CStr(L)
Verdier(L).D = Rnd
Next
'sorter:
For i = 1 To 8: For j = 1 To 8
If Verdier(j).D > Verdier(j + 1).D Then
Tmp.S = Verdier(j + 1).S
Tmp.D = Verdier(j + 1).D
Verdier(j + 1).S = Verdier(j).S
Verdier(j + 1).D = Verdier(j).D
Verdier(j).S = Tmp.S
Verdier(j).D = Tmp.D
End If
Next: Next
'skriv:
For i = 1 To 9
MsgBox Verdier(i).S
Next
End Sub
HTH. Beste hilsen Harald
"StoneWare" <HejMedDig@NoSpam.Net> skrev i melding
news:4300a3f6$0$43417$edfadb0f@dread12.news.tele.dk...
> Jeg skal have en 3x3 firkant ( altså 9 felter ) udfyldt med tallene fra1
> til 9
> og der må ikke være 2 ens tal i firkanten...........og jeg skal bruge alle
> kombinationer....altså 362.880 kombinationer.............. det må gerne
> være som en string ... eks "123456789" eller måske eks. "abcdefghi" gemt
> i et array !!
>
> Nogle der kan klare den ??
>
| |
Thor (28-08-2005)
| Kommentar Fra : Thor |
Dato : 28-08-05 21:34 |
|
Hej Stone
Her er en bruteforce løsning i Delphi:
Ikke køn men rimelig effektiv.
procedure TForm1.Button1Click(Sender: TObject);
var n1,n2,n3,n4,n5,n6,n7,n8,n9 : integer;
begin
for n1 := 1 to 9 do
for n2 := 1 to 9 do
for n3 := 1 to 9 do
for n4 := 1 to 9 do
for n5 := 1 to 9 do
for n6 := 1 to 9 do
for n7 := 1 to 9 do
for n8 := 1 to 9 do
for n9 := 1 to 9 do
if not (n1 in [n2,n3,n4,n5,n6,n7,n8,n9]) then
if not (n2 in [n1,n3,n4,n5,n6,n7,n8,n9]) then
if not (n3 in [n1,n2,n4,n5,n6,n7,n8,n9]) then
if not (n4 in [n1,n2,n3,n5,n6,n7,n8,n9]) then
if not (n5 in [n1,n2,n3,n4,n6,n7,n8,n9]) then
if not (n6 in [n1,n2,n3,n4,n5,n7,n8,n9]) then
if not (n7 in [n1,n2,n3,n4,n5,n6,n8,n9]) then
if not (n8 in [n1,n2,n3,n4,n5,n6,n7,n9]) then
if not (n9 in [n1,n2,n3,n4,n5,n6,n7,n8]) then
memo1.lines.add(
inttostr(n1)+' '+
inttostr(n2)+' '+
inttostr(n3)+' '+
inttostr(n4)+' '+
inttostr(n5)+' '+
inttostr(n6)+' '+
inttostr(n7)+' '+
inttostr(n8)+' '+
inttostr(n9));
end;
| |
Peter Lykkegaard (03-09-2005)
| Kommentar Fra : Peter Lykkegaard |
Dato : 03-09-05 18:13 |
|
"StoneWare" wrote
> Jeg skal have en 3x3 firkant ( altså 9 felter ) udfyldt med tallene fra1
> til 9
> og der må ikke være 2 ens tal i firkanten...........og jeg skal bruge alle
> kombinationer....altså 362.880 kombinationer.............. det må gerne
> være som en string ... eks "123456789" eller måske eks. "abcdefghi" gemt
> i et array !!
>
Hvis det er Sudoku, så er der lidt inspiration her
http://en.wikipedia.org/wiki/Sudoku#Mathematics_of_Sudoku
- Peter
| |
|
|