/ Forside / Teknologi / Udvikling / VB/Basic / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
VB/Basic
#NavnPoint
berpox 2425
pete 1435
CADmageren 1251
gibson 1230
Phylock 887
gandalf 836
AntonV 790
strarup 750
Benjamin... 700
10  tom.kise 610
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
newssvkbxcqr0p03yo@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
> newssvkbxcqr0p03yo@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
newssvkbxcqr0p03yo@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



Søg
Reklame
Statistik
Spørgsmål : 177579
Tips : 31968
Nyheder : 719565
Indlæg : 6409075
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste