Kuinka monta nelikkoa?

Edellisessä tarinassani loin GeoGebralla sovelluksen, jonka avulla voi tutkia Sagreda Familian seinällä sijaitsevaa Subirachsin taikaneliötä. Kuinka monta sellaista neljän luvun ryhmää luvuista 1,14, 14, 4, 11, 7, 6, 9, 8, 10, 10, 5, 13, 2, 3, 15 saa siten, että niiden summa on 33?

Yritin ensin tuottaa sisäkkäisiä silmukoita GeoGebralla, mutta tässä tapauksessa lauseke menee niin monimutkaiseksi, että minun pääni ei kestä. Niinpä vaihdoin kielen Pythoniin ja kirjoitin koodinpätkän. Sen perusteella neljän luvun ryhmiä on 88.

Ensimmäisellä rivillä ladataan itertools-kirjasto, jotta combinations() saadaan käyttöön. combinations(luvut,4) tuottaa listan, jossa on kaikki luvut-listan neljän mittaiset kombinaatiot. Niitähän on nCr(16,4) = 1820 kappaletta. Loppu koodista lienee ymmärrettävissä; for-silmukassa tutkitaan summia ja lisätään oikeat tulos-listaan. len(tulos) laskee tulos-listan pituuden.

Alla ohjelman tuottama tulos.

[(1, 14, 14, 4), (1, 14, 11, 7), (1, 14, 8, 10), (1, 14, 8, 10), (1, 14, 5, 13), (1, 14, 3, 15), (1, 14, 11, 7), (1, 14, 8, 10), (1, 14, 8, 10), (1, 14, 5, 13), (1, 14, 3, 15), (1, 4, 13, 15), (1, 11, 6, 15), (1, 11, 8, 13), (1, 7, 10, 15), (1, 7, 10, 15), (1, 9, 8, 15), (1, 9, 10, 13), (1, 9, 10, 13), (14, 14, 2, 3), (14, 4, 7, 8), (14, 4, 6, 9), (14, 4, 10, 5), (14, 4, 10, 5), (14, 4, 13, 2), (14, 11, 6, 2), (14, 11, 5, 3), (14, 7, 9, 3), (14, 7, 10, 2), (14, 7, 10, 2), (14, 6, 8, 5), (14, 6, 10, 3), (14, 6, 10, 3), (14, 9, 8, 2), (14, 4, 7, 8), (14, 4, 6, 9), (14, 4, 10, 5), (14, 4, 10, 5), (14, 4, 13, 2), (14, 11, 6, 2), (14, 11, 5, 3), (14, 7, 9, 3), (14, 7, 10, 2), (14, 7, 10, 2), (14, 6, 8, 5), (14, 6, 10, 3), (14, 6, 10, 3), (14, 9, 8, 2), (4, 11, 8, 10), (4, 11, 8, 10), (4, 11, 5, 13), (4, 11, 3, 15), (4, 7, 9, 13), (4, 6, 8, 15), (4, 6, 10, 13), (4, 6, 10, 13), (4, 9, 10, 10), (4, 9, 5, 15), (11, 7, 6, 9), (11, 7, 10, 5), (11, 7, 10, 5), (11, 7, 13, 2), (11, 6, 13, 3), (11, 9, 8, 5), (11, 9, 10, 3), (11, 9, 10, 3), (11, 10, 10, 2), (11, 5, 2, 15), (7, 6, 10, 10), (7, 6, 5, 15), (7, 9, 2, 15), (7, 8, 5, 13), (7, 8, 3, 15), (7, 10, 13, 3), (7, 10, 13, 3), (6, 9, 8, 10), (6, 9, 8, 10), (6, 9, 5, 13), (6, 9, 3, 15), (6, 10, 2, 15), (6, 10, 2, 15), (9, 8, 13, 3), (8, 10, 10, 5), (8, 10, 13, 2), (8, 10, 13, 2), (10, 5, 3, 15), (10, 5, 3, 15), (13, 2, 3, 15)]
nelikkoja on 88

[edit. 1.3.19 lisäsin muutaman virkkeen liittyen Python ohjelmaan. Vaihdoin ohjelmakoodin kuvan parempaan.]

Vastaa

Täytä tietosi alle tai klikkaa kuvaketta kirjautuaksesi sisään:

WordPress.com-logo

Olet kommentoimassa WordPress.com -tilin nimissä. Log Out /  Muuta )

Google photo

Olet kommentoimassa Google -tilin nimissä. Log Out /  Muuta )

Twitter-kuva

Olet kommentoimassa Twitter -tilin nimissä. Log Out /  Muuta )

Facebook-kuva

Olet kommentoimassa Facebook -tilin nimissä. Log Out /  Muuta )

Muodostetaan yhteyttä palveluun %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.