Hilf mir, diese Python 3.x Self-Challenge zu beenden

8

Das sind keine Hausaufgaben.

Ich habe diesen Artikel gesehen, der die Linq-Bibliothek lobt und wie toll es ist , Kombinatorik-Sachen zu machen, und ich dachte mir: Python kann es lesbarer machen.

Nachdem ich eine halbe Stunde mit Python getupft habe, bin ich gescheitert. Bitte beenden Sie, wo ich aufgehört habe. Mach es auch möglichst pythonisch und effizient.

%Vor%

Danke!

    
Hamish Grubijan 15.04.2010, 22:45
quelle

4 Antworten

24

Hier ist eine kurze Lösung, die itertools.permutations verwendet:

%Vor%

Ich habe absichtlich die Teilbarkeitsprüfungen um 1 und um 9 weggelassen, da sie immer zufrieden sein werden.

    
Mark Dickinson 15.04.2010, 23:01
quelle
3

Hier ist meine Lösung. Ich mag alle Dinge von unten nach oben ;-). Auf meiner Maschine läuft es etwa 580 mal schneller (3,1 ms vs. 1,8 sec) als Marks:

%Vor%

EDIT: Auch das funktioniert und doppelt so schnell (1,6 ms):

%Vor%     
pillmuncher 30.06.2011 23:42
quelle
2

Hier ist meine Lösung (nicht so elegant wie die von Mark, aber sie funktioniert immer noch):

%Vor%     
Justin Peel 15.04.2010 23:06
quelle
1

das ist meine Lösung, es ist Marks sehr ähnlich, aber es läuft etwa doppelt so schnell

%Vor%     
gtmanfred 30.06.2011 21:37
quelle