Alussa on 100 palavaa lamppua. Siirryt ovelta ovelle, sammuttaen palavan ja sytyttäen sammutetun lampun. Aloitus kierroksella sammutat jokaisen lampun, toisella kierroksella käyt vain joka toisella lampulla, sytyttäen tai sammuttaen lampun riippuen onko lamppu palamassa vai sammutettu, seuraavalla kierroksella käyt joka kolmannella lampulla, ja sitten joka neljännellä lampulla ja niin edelleen, niin kauan kunnes olet tehnyt kierroksia siinä määrin ettei lamppuja ole kuin se sadas lamppu jonka sytytät tai sammutat, riippuen mikä sen tila oli lampulle tullessa.
Lopuksi tulostat palavien lamppujen numerot seuraavasti:
11, 24, 29, 36, 45, 46, 59, 62, 92, 100
Ratkaise millä kielellä osaat, vaikka sitten arvaten. Montakohan merkkiä tarvitaan python koodia tähän.
Lopuksi tulostat palavien lamppujen numerot seuraavasti:
11, 24, 29, 36, 45, 46, 59, 62, 92, 100
Ratkaise millä kielellä osaat, vaikka sitten arvaten. Montakohan merkkiä tarvitaan python koodia tähän.
Vastaukset 13
Vanhimmat
Tulihan tuohon moka, jos alussa on palavat lamput, tulostetaan sammutetut, ja toisin päin, jos alussa on sammutetut, tulostetaan palavat lamput.
Eli tulostetaan lamput joiden tila ei ole enää alkuperäinen.
Vaikea tietää mitä tuossa tehtävässä oikein tarkoitetaan, oletin että ei kierroksia joissa edestakaisilla reissuillla sammutellaan/sytytellään kumpaankin suuntaan mennessä:
kierros 1. sammutetaan siis 100 lamppua
kierros 2. alkaa, kaikki lamput ovat sammutettuina, menemme lampulta toiselle harppauksin 2
alkaa kierros: 2 muutettuja lamppuja yhteensa:0 askel:2
alkaa kierros: 3 muutettuja lamppuja yhteensa:50 askel:3
alkaa kierros: 4 muutettuja lamppuja yhteensa:84 askel:4
kohdassa kierros: 4, lamppu numero 60 tuli 100 muutettua lamppua täyteen
tulostetaan kaikkien lamppujen tila
palamattomat lamput:
lamppu numero 1 ei pala, on järjestyksessä palamaton lamppu numero 1.
lamppu numero 4 ei pala, on järjestyksessä palamaton lamppu numero 2.
lamppu numero 5 ei pala, on järjestyksessä palamaton lamppu numero 3.
...
6,7,8,11,13,16,17,18,19,20,23,25,28,29,30,31,32,35,37,40,41,42,43,44,47,49,52,53,54,55,56,59,61,65,66,67,71,72,73,77,78,79,83,84,85,89,90,91,95,96,97,
palavat lamput:
lamppu numero 0 palaa, on järjestyksessä palava lamppu numero 1.
lamppu numero 2 palaa, on järjestyksessä palava lamppu numero 2.
lamppu numero 3 palaa, on järjestyksessä palava lamppu numero 3.
...
9,10,12,14,15,21,22,24,26,27,33,34,36,38,39,45,46,48,50,51,57,58,60,62,63,64,68,69,70,74,75,76,80,81,82,86,87,88,92,93,94,98,99,
Jos teemme kierroksen käymällä toisella ovella sammutellen ja sytytellen lamppuja käy näin:
kierros 1. sammutetaan siis 100 lamppua
kierros 2. alkaa, kaikki lamput ovat sammutettuina, menemme lampulta toiselle harppauksin 2
alkaa kierros: 2 muutettuja lamppuja yhteensa:0 askel:2
ollaan puolimatkassa,kierros: 2 muutettuja lamppuja yhteensa:50 askel:2
kohdassa kierros: 2, lamppu numero 2 tuli 100 muutettua lamppua täyteen
tulostetaan kaikkien lamppujen tila
palamattomat lamput:
lamppu numero 1 ei pala, on järjestyksessä palamaton lamppu numero 1.
lamppu numero 2 ei pala, on järjestyksessä palamaton lamppu numero 2.
lamppu numero 3 ei pala, on järjestyksessä palamaton lamppu numero 3.
...
4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,
palavat lamput:
lamppu numero 0 palaa, on järjestyksessä palava lamppu numero 1.
Jos emme tee täyttä kierrosta vaan hyppäämme yhden lampun yli, kierroksen puolimatkassa käy näin:
kierros 1. sammutetaan siis 100 lamppua
kierros 2. alkaa, kaikki lamput ovat sammutettuina, menemme lampulta toiselle harppauksin 2
alkaa kierros: 2 muutettuja lamppuja yhteensa:0 askel:2
ollaan puolimatkassa,kierros: 2 muutettuja lamppuja yhteensa:50 askel:2
kohdassa kierros: 2, lamppu numero 1 tuli 100 muutettua lamppua täyteen
tulostetaan kaikkien lamppujen tila
palamattomat lamput:
palavat lamput:
lamppu numero 0 palaa, on järjestyksessä palava lamppu numero 1.
lamppu numero 1 palaa, on järjestyksessä palava lamppu numero 2.
lamppu numero 2 palaa, on järjestyksessä palava lamppu numero 3.
...
3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,
Väite: Neliöluvut (väliltä 1-100) tulostuvat.
Todistus: Lampun k tila vaihtuu niin monta kertaa kuin k:lla on tekijöitä. Tekijöiden määrä saadaan k:n alkulukuhajoitelmasta k = sum_j pj^aj kaavalla prod_j (1 aj). Tämä on pariton jos ja vain jos jokainen a_j on parillinen eli k on neliöluku.
Enkös minä noin sanonutkin, vaikken mitään virkkanutkaan.
Ensimmäinen lamppu on kyllä numeroltaan 0, nollakin on numero, jos et vielä tuota tiennyt :D Nollasta sataan positiiviset numerot ovat 0-99. eivät ikinä ole 1-100, eivätkä edes 7-13 :D:D
Noin minä ajattelinkin niiden olevan, en vaan muistanut mainita tuota avauksessa.
Entäs sitten kun joku lamppu tuossa räpsyttelyssä hajoaa?
Ei nuo LED-lamputkaan ikuisia tunnu olevan.
Vaihdoin autoon rekisterinkilven polttimot LED-polttimoiksi, siihen loppu joka vuotuinen polttimoiden vaihto. Tästä voidaan vetää johtopäätös, että ovat merkittävästi pitkäikäisempiä kuin hehkulankapolttimot. En vain huomannut laittaa tätäkään avaukseen.
Oli aika hauska aamun pähkinä purtavaksi, kun itse jotain Direct3D, DirectX -juttuja teen, oli hieman helpompi tehtävä kun jotain moniulotteisia grafiikkamatriiseja, valaistukset jne pyöritellä mielessä, aivot väsyvät helposti kun moniulotteisia matriiseja vilisee vain silmissä ja niiden numeroarvoja :SD
Voin kyllä sanoa että, aika laajallakin kokemuksella, että joku Direct3D/DirectX ohjelmointi on syntaksiltaan aika minen sanoisinkaan.. herkullista, päinvastaisessa mielessä.
Hyvä tuollainenkin käsky tietokoneelle, mitä tekee tuo:
" // select the vertex and index buffers to use
d3ddev->SetStreamSource(0, v_buffer, 0, sizeof(CUSTOMVERTEX));
d3ddev->SetIndices(i_buffer);
"
Linus ei taida ymmärtää jotain Direct3D-juttuja kun Linux on aina yksiulotteinen käyttöjärjestelmä monokkeleineen.
Jatkaisin tuota jotain Direct3D/D3DX -juttua eli tuollainen koodirivi tarjoittaa:
Eli tuollaisessa koodissa tarkoittaa, että on jo varattuna d3ddev=on grafiikkakiihdytin, jolle määräämme laskutoimituksia, 0, on normaali, v_buffer on sellaisten moniulotteisten matriksien määritelmä, yleensä moniulotteisiak, sizeof=operandi, kuinka paljon varataan grafiikkakiihdyttimen muistista tilaa.
SetIndices, on tarpeeton toiminto, laskujärjestyksen määritelmää, miten z-mipmap-buffereita, shaderaita jne... laskeskeltaan sitten..