Lottorivien määrä, Basic-käänäjällä laskettu

( 7, 7)= 1
( 8, 4)= 2 ( 8, 5)= 2 ( 8, 6)= 2 ( 8, 7)= 1

( 9, 3)= 6 ( 9, 4)= 10 ( 9, 5)= 7 ( 9, 6)= 4

( 9, 7)= 1
( 10, 2)= 4 ( 10, 3)= 30 ( 10, 4)= 28 ( 10, 5)= 15

( 10, 6)= 6 ( 10, 7)= 1
( 11, 2)= 26 ( 11, 3)= 89 ( 11, 4)= 60 ( 11, 5)= 26

( 11, 6)= 8 ( 11, 7)= 1
( 12, 2)= 96 ( 12, 3)= 205 ( 12, 4)= 110 ( 12, 5)= 40

( 12, 6)= 10 ( 12, 7)= 1
( 13, 1)= 1 ( 13, 2)= 266 ( 13, 3)= 405 ( 13, 4)= 182

( 13, 5)= 57 ( 13, 6)= 12 ( 13, 7)= 1
( 14, 1)= 7 ( 14, 2)= 616 ( 14, 3)= 721 ( 14, 4)= 280

( 14, 5)= 77 ( 14, 6)= 14 ( 14, 7)= 1
( 15, 1)= 28 ( 15, 2)= 1260 ( 15, 3)= 1190 ( 15, 4)= 408

( 15, 5)= 100 ( 15, 6)= 16 ( 15, 7)= 1
( 16, 1)= 84 ( 16, 2)= 2352 ( 16, 3)= 1854 ( 16, 4)= 570

( 16, 5)= 126 ( 16, 6)= 18 ( 16, 7)= 1
( 17, 1)= 210 ( 17, 2)= 4092 ( 17, 3)= 2760 ( 17, 4)= 770

( 17, 5)= 155 ( 17, 6)= 20 ( 17, 7)= 1
( 18, 1)= 462 ( 18, 2)= 6732 ( 18, 3)= 3960 ( 18, 4)= 1012

( 18, 5)= 187 ( 18, 6)= 22 ( 18, 7)= 1
( 19, 1)= 924 ( 19, 2)= 10582 ( 19, 3)= 5511 ( 19, 4)= 1300

( 19, 5)= 222 ( 19, 6)= 24 ( 19, 7)= 1
( 20, 1)= 1716 ( 20, 2)= 16016 ( 20, 3)= 7475 ( 20, 4)= 1638

( 20, 5)= 260 ( 20, 6)= 26 ( 20, 7)= 1
( 21, 1)= 3003 ( 21, 2)= 23478 ( 21, 3)= 9919 ( 21, 4)= 2030

( 21, 5)= 301 ( 21, 6)= 28 ( 21, 7)= 1
( 22, 1)= 5005 ( 22, 2)= 33488 ( 22, 3)= 12915 ( 22, 4)= 2480

( 22, 5)= 345 ( 22, 6)= 30 ( 22, 7)= 1
( 23, 1)= 8008 ( 23, 2)= 46648 ( 23, 3)= 16540 ( 23, 4)= 2992

( 23, 5)= 392 ( 23, 6)= 32 ( 23, 7)= 1
( 24, 1)= 12376 ( 24, 2)= 63648 ( 24, 3)= 20876 ( 24, 4)= 3570

( 24, 5)= 442 ( 24, 6)= 34 ( 24, 7)= 1
( 25, 1)= 18564 ( 25, 2)= 85272 ( 25, 3)= 26010 ( 25, 4)= 4218

( 25, 5)= 495 ( 25, 6)= 36 ( 25, 7)= 1
( 26, 1)= 27132 ( 26, 2)= 112404 ( 26, 3)= 32034 ( 26, 4)= 4940

( 26, 5)= 551 ( 26, 6)= 38 ( 26, 7)= 1
( 27, 1)= 38760 ( 27, 2)= 146034 ( 27, 3)= 39045 ( 27, 4)= 5740

( 27, 5)= 610 ( 27, 6)= 40 ( 27, 7)= 1
( 28, 1)= 54264 ( 28, 2)= 187264 ( 28, 3)= 47145 ( 28, 4)= 6622

( 28, 5)= 672 ( 28, 6)= 42 ( 28, 7)= 1
( 29, 1)= 74613 ( 29, 2)= 237314 ( 29, 3)= 56441 ( 29, 4)= 7590

( 29, 5)= 737 ( 29, 6)= 44 ( 29, 7)= 1
( 30, 1)= 100947 ( 30, 2)= 297528 ( 30, 3)= 67045 ( 30, 4)= 8648

( 30, 5)= 805 ( 30, 6)= 46 ( 30, 7)= 1
( 31, 1)= 134596 ( 31, 2)= 369380 ( 31, 3)= 79074 ( 31, 4)= 9800

( 31, 5)= 876 ( 31, 6)= 48 ( 31, 7)= 1
( 32, 1)= 177100 ( 32, 2)= 454480 ( 32, 3)= 92650 ( 32, 4)= 11050

( 32, 5)= 950 ( 32, 6)= 50 ( 32, 7)= 1
( 33, 1)= 230230 ( 33, 2)= 554580 ( 33, 3)= 107900 ( 33, 4)= 12402

( 33, 5)= 1027 ( 33, 6)= 52 ( 33, 7)= 1
( 34, 1)= 296010 ( 34, 2)= 671580 ( 34, 3)= 124956 ( 34, 4)= 13860

( 34, 5)= 1107 ( 34, 6)= 54 ( 34, 7)= 1
( 35, 1)= 376740 ( 35, 2)= 807534 ( 35, 3)= 143955 ( 35, 4)= 15428

( 35, 5)= 1190 ( 35, 6)= 56 ( 35, 7)= 1
( 36, 1)= 475020 ( 36, 2)= 964656 ( 36, 3)= 165039 ( 36, 4)= 17110

( 36, 5)= 1276 ( 36, 6)= 58 ( 36, 7)= 1
( 37, 1)= 593775 ( 37, 2)= 1145326 ( 37, 3)= 188355 ( 37, 4)= 18910

( 37, 5)= 1365 ( 37, 6)= 60 ( 37, 7)= 1
( 38, 1)= 736281 ( 38, 2)= 1352096 ( 38, 3)= 214055 ( 38, 4)= 20832

( 38, 5)= 1457 ( 38, 6)= 62 ( 38, 7)= 1
( 39, 1)= 906192 ( 39, 2)= 1587696 ( 39, 3)= 242296 ( 39, 4)= 22880

( 39, 5)= 1552 ( 39, 6)= 64 ( 39, 7)= 1

1:n jonoja 7:n mittaisia:( 39) joukossa: 4272048
2:n jonoja 7:n mittaisia:( 39) joukossa: 9182448
3:n jonoja 7:n mittaisia:( 39) joukossa: 1710456
4:n jonoja 7:n mittaisia:( 39) joukossa: 197472
5:n jonoja 7:n mittaisia:( 39) joukossa: 17424
6:n jonoja 7:n mittaisia:( 39) joukossa: 1056
7:n jonoja 7:n mittaisia:( 39) joukossa: 33

Kun nuo laskee yhteen, tulee 39 nCr 7 = 15380937, joten tulos on oikein...
Ohjelma ei ollut pitkä, joten haluaako joku nähdä sen?
Se hyppäsi sellaisten rivien yli, jossa oli alle 7 merkkiä, ja joissa yli, se ei heti välttämättä päässyt sellaisen ali kohtaan, jossa 7 merkkiä, mutta yleensä siinä niin kävi....
Voin sen ohjelman Copy-pasteta tänne, jos haluatte?
Pari minuuttia meni kääntäjällä....
Tulkilla olisi kestänyt monta päivää...
6203
Äänestä

Muut lukivat myös

Vastaukset 6

Vanhimmat

Meni noin viisi minuuttia tarkkaan ottaen....
En tiedä, miksi meni niinkin kauan, ilmeiesesti koodi ei ollut ihan "optimaalista"
Tulkilla olisi mennyt ainakin 100-1000-kertaa kauemmin eli monta päivää....

Äänestä

Hiukan paremmin muotoiltuna, sarkaimet ei tässä näköjään sattuneet samaan kohtaan.

7: | 1 | | 2 | | 3 | | 4 | | 5 | | 6 | | 7 |
1

8: | 1 | | 2 | | 3 | | 4 | | 5 | | 6 | | 7 |
2 2 2 1

9: | 1 | | 2 | | 3 | | 4 | | 5 | | 6 | | 7 |
6 10 7 4 1

10: | 1 | | 2 | | 3 | | 4 | | 5 | | 6 | | 7 |

4 30 28 15 6 1

11: | 1 | | 2 | | 3 | | 4 | | 5 | | 6 | | 7 |
26 89 60 26 8 1

12: | 1 | | 2 | | 3 | | 4 | | 5 | | 6 | | 7 |
96 205 110 40 10 1

13: | 1 | | 2 | | 3 | | 4 | | 5 | | 6 | | 7 |
1 266 405 182 57 12 1

14: | 1 | | 2 | | 3 | | 4 | | 5 | | 6 | | 7 |
7 616 721 280 77 14 1

15: | 1 | | 2 | | 3 | | 4 | | 5 | | 6 | | 7 |
28 1260 1190 408 100 16 1

16: | 1 | | 2 | | 3 | | 4 | | 5 | | 6 | | 7 |
84 2352 1854 570 126 18 1

17: | 1 | | 2 | | 3 | | 4 | | 5 | | 6 | | 7 |
210 4092 2760 770 155 20 1

18: | 1 | | 2 | | 3 | | 4 | | 5 | | 6 | | 7 |
462 6732 3960 1012 187 22 1

19: | 1 | | 2 | | 3 | | 4 | | 5 | | 6 | | 7 |
924 10582 5511 1300 222 24 1

20: | 1 | | 2 | | 3 | | 4 | | 5 | | 6 | | 7 |
1716 16016 7475 1638 260 26 1

21: | 1 | | 2 | | 3 | | 4 | | 5 | | 6 | | 7 |
3003 23478 9919 2030 301 28 1

22: | 1 | | 2 | | 3 | | 4 | | 5 | | 6 | | 7 |
5005 33488 12915 2480 345 30 1

23: | 1 | | 2 | | 3 | | 4 | | 5 | | 6 | | 7 |
8008 46648 16540 2992 392 32 1

24: | 1 | | 2 | | 3 | | 4 | | 5 | | 6 | | 7 |
12376 63648 20876 3570 442 34 1

25: | 1 | | 2 | | 3 | | 4 | | 5 | | 6 | | 7 |
18564 85272 26010 4218 495 36 1

26: | 1 | | 2 | | 3 | | 4 | | 5 | | 6 | | 7 |
27132 112404 32034 4940 551 38 1

27: | 1 | | 2 | | 3 | | 4 | | 5 | | 6 | | 7 |
38760 146034 39045 5740 610 40 1

28: | 1 | | 2 | | 3 | | 4 | | 5 | | 6 | | 7 |
54264 187264 47145 6622 672 42 1

29: | 1 | | 2 | | 3 | | 4 | | 5 | | 6 | | 7 |
74613 237314 56441 7590 737 44 1

30: | 1 | | 2 | | 3 | | 4 | | 5 | | 6 | | 7 |
100947 297528 67045 8648 805 46 1

31: | 1 | | 2 | | 3 | | 4 | | 5 | | 6 | | 7 |
134596 369380 79074 9800 876 48 1

32: | 1 | | 2 | | 3 | | 4 | | 5 | | 6 | | 7 |
177100 454480 92650 11050 950 50 1

33: | 1 | | 2 | | 3 | | 4 | | 5 | | 6 | | 7 |
230230 554580 107900 12402 1027 52 1

34: | 1 | | 2 | | 3 | | 4 | | 5 | | 6 | | 7 |
296010 671580 124956 13860 1107 54 1

35: | 1 | | 2 | | 3 | | 4 | | 5 | | 6 | | 7 |
376740 807534 143955 15428 1190 56 1

36: | 1 | | 2 | | 3 | | 4 | | 5 | | 6 | | 7 |
475020 964656 165039 17110 1276 58 1

37: | 1 | | 2 | | 3 | | 4 | | 5 | | 6 | | 7 |
593775 1145326 188355 18910 1365 60 1

38: | 1 | | 2 | | 3 | | 4 | | 5 | | 6 | | 7 |
736281 1352096 214055 20832 1457 62 1

39: | 1 | | 2 | | 3 | | 4 | | 5 | | 6 | | 7 |
906192 1587696 242296 22880 1552 64 1

1:n jonoja 7:n mittaisia:( 39) joukossa: 4272048
2:n jonoja 7:n mittaisia:( 39) joukossa: 9182448
3:n jonoja 7:n mittaisia:( 39) joukossa: 1710456
4:n jonoja 7:n mittaisia:( 39) joukossa: 197472
5:n jonoja 7:n mittaisia:( 39) joukossa: 17424
6:n jonoja 7:n mittaisia:( 39) joukossa: 1056
7:n jonoja 7:n mittaisia:( 39) joukossa: 33

Äänestä

Mitä järkeä? Minulla rähmäkäpälällä meni taskulaskimella n. 5 sekuntia moiseen. Siis
39!/ (7! * 32!). Käsinkin onnistuu takuulla alle minuutissa.

Äänestä

REM UUSILOTTO
REM Lyhykäiset rivit löytää kaikki
REM FreeBasic, vanha Basic-kääntäjä, imuroi jos jaksat....
REM kommentti koodista: AND maskia ei käytetty, kosk kääntäjä ei osannut
REM maskata yli 32 bittisillä...

type tyyppi
bits as byte
ybit as byte
bitm2 as byte
maski as double
lisays as double
end type

declare sub tulosta(binjono as double, yhtbit as byte)
declare function binaariksi(binjono as double, maxjono as byte, bitlkm as byte) as tyyppi

dim tulos(50, 10) AS INTEGER
dim a as integer
dim c as integer
dim maskiapu as double
dim maski as double
dim lisays as double
dim suurinjono as double
dim lask as byte
dim binjono as double
dim bkohta as double
dim i as byte
dim ii as byte
dim bitm as byte
dim bitm2 as byte
dim lisa as byte = 0
FOR a = 0 TO 49: FOR c = 0 TO 9
tulos(a, c) = 0
NEXT c
NEXT a

dim bitlkm as integer
dim maxjono as byte

virhe:
dim kysy as string
dim tlsta as byte

INPUT "Montako bitti„ (max 48)?"; bitlkm
if bitlkm > 48 THEN goto virhe
INPUT "Mik„ on maxjono?"; maxjono
IF maxjono > bitlkm OR maxjono > 10 THEN GOTO virhe:
INPUT "Tulostetaanko rivit?(K = k = kyllä)";kysy
if kysy = "k" or kysy = "K" then tlsta = 1
DIM jonoja(48) AS DOUBLE
DIM jonostr(48) AS STRING
dim bitteja as byte

jonoja(0) = 1


FOR i = 1 TO 48
jonoja(i) = 2 ^ i - 1!
NEXT

dim maxluku as double
maxluku = 2 ^ bitlkm

FOR i = 1 TO bitlkm
jonostr(i) = "0" STRING$(i, "1") "0"
NEXT

dim edkohta as integer
dim yhtkohta as byte

edkohta = -1
yhtkohta = 0

dim yhtbit as byte
dim j as double
dim omatype as tyyppi
dim as byte tls = 0

suurinjono = jonoja(maxjono) * 2 ^ (bitlkm - maxjono)
j = jonoja(maxjono)

looppi:
while (j maxjono THEN
j = j lisays

IF j > suurinjono THEN goto tulostin
edkohta = yhtbit
omatype = binaariksi(j, maxjono, bitlkm)
bitteja = omatype.bits
yhtbit = omatype.ybit
bitm2 = omatype.bitm2
maski = omatype.maski
lisays = omatype.lisays
GOTO ylimeni

End if

tokameni:
IF bitteja < maxjono THEN
j = j maski
edkohta = yhtbit
IF j > suurinjono then goto tulostin
omatype = binaariksi(j, maxjono, bitlkm)

bitteja = omatype.bits
yhtbit = omatype.ybit
bitm2 = omatype.bitm2
maski = omatype.maski
lisays = omatype.lisays
END IF


tulos(yhtbit, bitm2) = tulos(yhtbit, bitm2) 1
if tlsta = 0 then goto jatkuu
PRINT yhtbit; ":";:tulosta(j, yhtbit)
PRINT ":"; bitm2; ":"; j;
PRINT ":"; tulos(yhtbit, bitm2);" ";
tls = tls 1
if tls = 20 then input"";kysy: tls = 0
if tls mod 2 = 1 then print
jatkuu:
j = j 1
rem end if
edkohta = yhtbit

wend
REM JATKUU....

Äänestä
  • REM Toivottavasti tämä ei ollut se BUGINEN versio!
    REM jatkoa....

    tulostin:
    dim SUMMA as integer
    dim arvo as integer
    dim as byte tulo = 0

    FOR i = 1 TO bitlkm
    print i;":";
    for ii = 1 to maxjono
    print tab(ii*8);"| ";ii;tab(ii*8 6);"|";
    next
    print
    print "-------------------------------------------------------------------------------"

    FOR ii = 1 TO maxjono
    arvo = tulos(i,ii)
    IF arvo > 0 THEN
    SUMMA = SUMMA arvo
    PRINT TAB(ii * 8); arvo;
    tulo = 1
    END IF
    NEXT
    if tulo = 1 then
    print
    print "------------------------------------------------------------------------------ "
    end if
    NEXT
    PRINT
    SUMMA = 0
    FOR i = 1 TO maxjono
    SUMMA = 0
    PRINT i; "; n jonoja "; maxjono; ":n mittaisia:("; bitlkm; ") joukossa:";
    FOR ii = 1 TO bitlkm
    arvo = tulos(ii,i)
    SUMMA = SUMMA arvo
    NEXT
    PRINT SUMMA
    NEXT

    dim vastaus as string
    dim nimi as string
    tulo = 0
    INPUT "Haluatko tiedotoon tuloksen?(E=Ei)"; vastaus
    IF vastaus = "e" OR vastaus = "E" THEN END
    INPUT "Tiedoston nimi?"; nimi
    OPEN nimi FOR OUTPUT AS 1
    FOR i = 1 TO bitlkm
    lask = 0
    print #1, i;":";
    for ii = 1 to maxjono
    print #1, tab(ii*8);"| ";ii;tab(ii*8 6);"|";
    next
    print #1, " "
    print #1, "-------------------------------------------------------------------------------"

    FOR ii = 1 TO maxjono
    arvo = tulos(i,ii)
    IF arvo > 0 THEN
    SUMMA = SUMMA arvo
    PRINT #1, TAB(ii * 8); arvo;
    tulo = 1
    END IF
    NEXT
    if tulo = 1 then
    print #1, " "
    print #1, "------------------------------------------------------------------------------ "
    end if
    NEXT
    PRINT #1," "
    FOR i = 1 TO maxjono
    SUMMA = 0
    PRINT #1, i; ":n jonoja"; maxjono; ":n mittaisia:("; bitlkm; ") joukossa:";
    FOR ii = 1 TO bitlkm
    arvo = tulos(ii,i)
    SUMMA = SUMMA arvo
    NEXT
    PRINT #1, SUMMA
    NEXT

    CLOSE #1
    PRINT "Tallennettu!"
    end
    rem end sub


    function binaariksi(binjono as double, maxjono as byte, bitlkm as byte) as tyyppi
    dim paluu as tyyppi
    dim as byte i, bitm, bitm2, bitteja, yhtbit, lisa, mbits
    dim as double maxluku, lisays, maski, maskiapu, bkohta, tuloss
    dim arvo as integer
    bitm = 0: bitm2 = 0: mbits = 0
    lisays = 1: maski = 0
    bitteja = 0: yhtbit = 0: lisa = 0
    bkohta = 1

    WHILE (bkohta = .5 THEN
    bitteja = bitteja 1
    IF lisa = 0 THEN lisays = bkohta: lisa = 1
    bitm = bitm 1
    ELSE
    IF bitm2 < bitm THEN bitm2 = bitm
    bitm = 0
    END IF
    bkohta = bkohta * 2
    WEND

    bkohta = 1
    IF bitm > bitm2 THEN bitm2 = bitm
    IF bitteja < maxjono THEN
    for i = 1 to bitlkm
    maskiapu= int(binjono/bkohta)/2 - int(binjono/bkohta/2)
    if maskiapu < 0.5 then mbits = mbits 1:maski = maski bkohta
    if mbits = (maxjono - bitteja) then i = bitlkm
    bkohta = bkohta * 2
    next
    if maski = 0 then maski = 1
    END IF
    paluu.bits = bitteja
    paluu.ybit = yhtbit
    paluu.bitm2 = bitm2
    paluu.maski = maski
    paluu.lisays = lisays

    return paluu

    end function


    sub tulosta(binjono as double, yhtbit as byte)
    dim as string binjonos = ""
    dim as string merkki
    dim as double bkohta = 1
    dim as byte s
    dim as double tulos = 0
    FOR s = 1 TO yhtbit
    merkki = "0"
    tulos = INT(binjono / bkohta) / 2 - INT(binjono / bkohta / 2)
    IF tulos >= .5 THEN merkki = "1"
    binjonos = merkki binjonos
    bkohta = bkohta * 2
    NEXT
    print binjonos;
    end sub

    loppu:
    END

    REM itse turhien rivien skippaus algyrytmi ei välttämättä tehokkain mahdollinen....

    Äänestä

  • Aukino kirjoitti:

    REM Toivottavasti tämä ei ollut se BUGINEN versio!
    REM jatkoa....

    tulostin:
    dim SUMMA as integer
    dim arvo as integer
    dim as byte tulo = 0

    FOR i = 1 TO bitlkm
    print i;":";
    for ii = 1 to maxjono
    print tab(ii*8);"| ";ii;tab(ii*8 6);"|";
    next
    print
    print "-------------------------------------------------------------------------------"

    FOR ii = 1 TO maxjono
    arvo = tulos(i,ii)
    IF arvo > 0 THEN
    SUMMA = SUMMA arvo
    PRINT TAB(ii * 8); arvo;
    tulo = 1
    END IF
    NEXT
    if tulo = 1 then
    print
    print "------------------------------------------------------------------------------ "
    end if
    NEXT
    PRINT
    SUMMA = 0
    FOR i = 1 TO maxjono
    SUMMA = 0
    PRINT i; "; n jonoja "; maxjono; ":n mittaisia:("; bitlkm; ") joukossa:";
    FOR ii = 1 TO bitlkm
    arvo = tulos(ii,i)
    SUMMA = SUMMA arvo
    NEXT
    PRINT SUMMA
    NEXT

    dim vastaus as string
    dim nimi as string
    tulo = 0
    INPUT "Haluatko tiedotoon tuloksen?(E=Ei)"; vastaus
    IF vastaus = "e" OR vastaus = "E" THEN END
    INPUT "Tiedoston nimi?"; nimi
    OPEN nimi FOR OUTPUT AS 1
    FOR i = 1 TO bitlkm
    lask = 0
    print #1, i;":";
    for ii = 1 to maxjono
    print #1, tab(ii*8);"| ";ii;tab(ii*8 6);"|";
    next
    print #1, " "
    print #1, "-------------------------------------------------------------------------------"

    FOR ii = 1 TO maxjono
    arvo = tulos(i,ii)
    IF arvo > 0 THEN
    SUMMA = SUMMA arvo
    PRINT #1, TAB(ii * 8); arvo;
    tulo = 1
    END IF
    NEXT
    if tulo = 1 then
    print #1, " "
    print #1, "------------------------------------------------------------------------------ "
    end if
    NEXT
    PRINT #1," "
    FOR i = 1 TO maxjono
    SUMMA = 0
    PRINT #1, i; ":n jonoja"; maxjono; ":n mittaisia:("; bitlkm; ") joukossa:";
    FOR ii = 1 TO bitlkm
    arvo = tulos(ii,i)
    SUMMA = SUMMA arvo
    NEXT
    PRINT #1, SUMMA
    NEXT

    CLOSE #1
    PRINT "Tallennettu!"
    end
    rem end sub


    function binaariksi(binjono as double, maxjono as byte, bitlkm as byte) as tyyppi
    dim paluu as tyyppi
    dim as byte i, bitm, bitm2, bitteja, yhtbit, lisa, mbits
    dim as double maxluku, lisays, maski, maskiapu, bkohta, tuloss
    dim arvo as integer
    bitm = 0: bitm2 = 0: mbits = 0
    lisays = 1: maski = 0
    bitteja = 0: yhtbit = 0: lisa = 0
    bkohta = 1

    WHILE (bkohta = .5 THEN
    bitteja = bitteja 1
    IF lisa = 0 THEN lisays = bkohta: lisa = 1
    bitm = bitm 1
    ELSE
    IF bitm2 < bitm THEN bitm2 = bitm
    bitm = 0
    END IF
    bkohta = bkohta * 2
    WEND

    bkohta = 1
    IF bitm > bitm2 THEN bitm2 = bitm
    IF bitteja < maxjono THEN
    for i = 1 to bitlkm
    maskiapu= int(binjono/bkohta)/2 - int(binjono/bkohta/2)
    if maskiapu < 0.5 then mbits = mbits 1:maski = maski bkohta
    if mbits = (maxjono - bitteja) then i = bitlkm
    bkohta = bkohta * 2
    next
    if maski = 0 then maski = 1
    END IF
    paluu.bits = bitteja
    paluu.ybit = yhtbit
    paluu.bitm2 = bitm2
    paluu.maski = maski
    paluu.lisays = lisays

    return paluu

    end function


    sub tulosta(binjono as double, yhtbit as byte)
    dim as string binjonos = ""
    dim as string merkki
    dim as double bkohta = 1
    dim as byte s
    dim as double tulos = 0
    FOR s = 1 TO yhtbit
    merkki = "0"
    tulos = INT(binjono / bkohta) / 2 - INT(binjono / bkohta / 2)
    IF tulos >= .5 THEN merkki = "1"
    binjonos = merkki binjonos
    bkohta = bkohta * 2
    NEXT
    print binjonos;
    end sub

    loppu:
    END

    REM itse turhien rivien skippaus algyrytmi ei välttämättä tehokkain mahdollinen....

    Anteeksi, elvistelyni, mutta jos keksit, miten miten voidaan skipata paremmin, turhia rivejä, niin melelläni kehittelisin algorytmiä...
    ON todella hidas esim QBasic-tulkilla(dim lauseit ei siinä tarvita kuin taulukoille), lottoriveissa menisi monta tuntia, mutta kääntäjä oli YLLÄTTÄVÄN nopea...
    39 bittiä, lottorivissä, kaikille jonon pituuksille, on suuri määrä, joten skippaus olis silti melko tehokasta...
    Itselleni tuli pieni pari viikkoa sitten, kun tein ohjelman, pieni "päänsärky", ja kuuntelin Aki Sirkesaloa juuri, ja Antti Tuiskun "Hyökyaallon", toivottavasti Zunami ei johtunut tästä?
    Varmaan iso-paha super-cray, ilmatieteenlaitoksella on suurempi syyllinen?

    Äänestä

Kommentoi aloitusta


Aukino kirjoitti:

( 7, 7)= 1
( 8, 4)= 2 ( 8, 5)= 2 ( 8, 6)= 2 ( 8, 7)= 1

( 9, 3)= 6 ( 9, 4)= 10 ( 9, 5)= 7 ( 9, 6)= 4

( 9, 7)= 1
( 10, 2)= 4 ( 10, 3)= 30 ( 10, 4)= 28 ( 10, 5)= 15

( 10, 6)= 6 ( 10, 7)= 1
( 11, 2)= 26 ( 11, 3)= 89 ( 11, 4)= 60 ( 11, 5)= 26

( 11, 6)= 8 ( 11, 7)= 1
( 12, 2)= 96 ( 12, 3)= 205 ( 12, 4)= 110 ( 12, 5)= 40

( 12, 6)= 10 ( 12, 7)= 1
( 13, 1)= 1 ( 13, 2)= 266 ( 13, 3)= 405 ( 13, 4)= 182

( 13, 5)= 57 ( 13, 6)= 12 ( 13, 7)= 1
( 14, 1)= 7 ( 14, 2)= 616 ( 14, 3)= 721 ( 14, 4)= 280

( 14, 5)= 77 ( 14, 6)= 14 ( 14, 7)= 1
( 15, 1)= 28 ( 15, 2)= 1260 ( 15, 3)= 1190 ( 15, 4)= 408

( 15, 5)= 100 ( 15, 6)= 16 ( 15, 7)= 1
( 16, 1)= 84 ( 16, 2)= 2352 ( 16, 3)= 1854 ( 16, 4)= 570

( 16, 5)= 126 ( 16, 6)= 18 ( 16, 7)= 1
( 17, 1)= 210 ( 17, 2)= 4092 ( 17, 3)= 2760 ( 17, 4)= 770

( 17, 5)= 155 ( 17, 6)= 20 ( 17, 7)= 1
( 18, 1)= 462 ( 18, 2)= 6732 ( 18, 3)= 3960 ( 18, 4)= 1012

( 18, 5)= 187 ( 18, 6)= 22 ( 18, 7)= 1
( 19, 1)= 924 ( 19, 2)= 10582 ( 19, 3)= 5511 ( 19, 4)= 1300

( 19, 5)= 222 ( 19, 6)= 24 ( 19, 7)= 1
( 20, 1)= 1716 ( 20, 2)= 16016 ( 20, 3)= 7475 ( 20, 4)= 1638

( 20, 5)= 260 ( 20, 6)= 26 ( 20, 7)= 1
( 21, 1)= 3003 ( 21, 2)= 23478 ( 21, 3)= 9919 ( 21, 4)= 2030

( 21, 5)= 301 ( 21, 6)= 28 ( 21, 7)= 1
( 22, 1)= 5005 ( 22, 2)= 33488 ( 22, 3)= 12915 ( 22, 4)= 2480

( 22, 5)= 345 ( 22, 6)= 30 ( 22, 7)= 1
( 23, 1)= 8008 ( 23, 2)= 46648 ( 23, 3)= 16540 ( 23, 4)= 2992

( 23, 5)= 392 ( 23, 6)= 32 ( 23, 7)= 1
( 24, 1)= 12376 ( 24, 2)= 63648 ( 24, 3)= 20876 ( 24, 4)= 3570

( 24, 5)= 442 ( 24, 6)= 34 ( 24, 7)= 1
( 25, 1)= 18564 ( 25, 2)= 85272 ( 25, 3)= 26010 ( 25, 4)= 4218

( 25, 5)= 495 ( 25, 6)= 36 ( 25, 7)= 1
( 26, 1)= 27132 ( 26, 2)= 112404 ( 26, 3)= 32034 ( 26, 4)= 4940

( 26, 5)= 551 ( 26, 6)= 38 ( 26, 7)= 1
( 27, 1)= 38760 ( 27, 2)= 146034 ( 27, 3)= 39045 ( 27, 4)= 5740

( 27, 5)= 610 ( 27, 6)= 40 ( 27, 7)= 1
( 28, 1)= 54264 ( 28, 2)= 187264 ( 28, 3)= 47145 ( 28, 4)= 6622

( 28, 5)= 672 ( 28, 6)= 42 ( 28, 7)= 1
( 29, 1)= 74613 ( 29, 2)= 237314 ( 29, 3)= 56441 ( 29, 4)= 7590

( 29, 5)= 737 ( 29, 6)= 44 ( 29, 7)= 1
( 30, 1)= 100947 ( 30, 2)= 297528 ( 30, 3)= 67045 ( 30, 4)= 8648

( 30, 5)= 805 ( 30, 6)= 46 ( 30, 7)= 1
( 31, 1)= 134596 ( 31, 2)= 369380 ( 31, 3)= 79074 ( 31, 4)= 9800

( 31, 5)= 876 ( 31, 6)= 48 ( 31, 7)= 1
( 32, 1)= 177100 ( 32, 2)= 454480 ( 32, 3)= 92650 ( 32, 4)= 11050

( 32, 5)= 950 ( 32, 6)= 50 ( 32, 7)= 1
( 33, 1)= 230230 ( 33, 2)= 554580 ( 33, 3)= 107900 ( 33, 4)= 12402

( 33, 5)= 1027 ( 33, 6)= 52 ( 33, 7)= 1
( 34, 1)= 296010 ( 34, 2)= 671580 ( 34, 3)= 124956 ( 34, 4)= 13860

( 34, 5)= 1107 ( 34, 6)= 54 ( 34, 7)= 1
( 35, 1)= 376740 ( 35, 2)= 807534 ( 35, 3)= 143955 ( 35, 4)= 15428

( 35, 5)= 1190 ( 35, 6)= 56 ( 35, 7)= 1
( 36, 1)= 475020 ( 36, 2)= 964656 ( 36, 3)= 165039 ( 36, 4)= 17110

( 36, 5)= 1276 ( 36, 6)= 58 ( 36, 7)= 1
( 37, 1)= 593775 ( 37, 2)= 1145326 ( 37, 3)= 188355 ( 37, 4)= 18910

( 37, 5)= 1365 ( 37, 6)= 60 ( 37, 7)= 1
( 38, 1)= 736281 ( 38, 2)= 1352096 ( 38, 3)= 214055 ( 38, 4)= 20832

( 38, 5)= 1457 ( 38, 6)= 62 ( 38, 7)= 1
( 39, 1)= 906192 ( 39, 2)= 1587696 ( 39, 3)= 242296 ( 39, 4)= 22880

( 39, 5)= 1552 ( 39, 6)= 64 ( 39, 7)= 1

1:n jonoja 7:n mittaisia:( 39) joukossa: 4272048
2:n jonoja 7:n mittaisia:( 39) joukossa: 9182448
3:n jonoja 7:n mittaisia:( 39) joukossa: 1710456
4:n jonoja 7:n mittaisia:( 39) joukossa: 197472
5:n jonoja 7:n mittaisia:( 39) joukossa: 17424
6:n jonoja 7:n mittaisia:( 39) joukossa: 1056
7:n jonoja 7:n mittaisia:( 39) joukossa: 33

Kun nuo laskee yhteen, tulee 39 nCr 7 = 15380937, joten tulos on oikein...
Ohjelma ei ollut pitkä, joten haluaako joku nähdä sen?
Se hyppäsi sellaisten rivien yli, jossa oli alle 7 merkkiä, ja joissa yli, se ei heti välttämättä päässyt sellaisen ali kohtaan, jossa 7 merkkiä, mutta yleensä siinä niin kävi....
Voin sen ohjelman Copy-pasteta tänne, jos haluatte?
Pari minuuttia meni kääntäjällä....
Tulkilla olisi kestänyt monta päivää...

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu