clojure map über die Sequenz von Paaren

8
%Vor%

Ich versuche, Paare von 2 zu erstellen, dann subtrahiere für jedes Paar die zweite Zahl von der ersten. gewünschtes Ergebnis: (1 6 4)

Hier ist, was ich versucht habe:

%Vor%

Wie kann ich das tun?

    
Rob Buhler 09.10.2012, 18:58
quelle

3 Antworten

10

Partition erzeugt eine Sequenz von Sequenzen, so dass die Funktion, die Sie über sie abbilden, eine Sequenz von zwei Elementen erwarten muss. Es gibt mehrere Möglichkeiten, dies auszudrücken:

%Vor%

Die Version, die apply verwendet, ist anders, weil sie immer noch in ungeraden Listen funktioniert:

%Vor%

Die anderen werden bei ungültiger Eingabe abstürzen, was Ihnen vielleicht lieber ist.

    
Arthur Ulfeldt 09.10.2012, 19:04
quelle
2

Hier ist eine Lösung mit reduce

%Vor%     
noahlz 09.10.2012 20:06
quelle
0

Ich frage mich, warum diese Lösung übersehen wurde ...

Da das Umschalten der Subtraktionsordnung einfach das Negative der ursprünglichen Subtraktion ist (a-b = - (b-a)), die Lösung wird effizienter (nur in diesem speziellen Fall !!)

%Vor%

Pedagogisch ist Arthurs Lösung richtig. Dies ist nur eine Lösung, die der spezifischen Frage besser entspricht.

    
Zchpyvr 13.12.2012 00:46
quelle

Tags und Links