Es wurde von meinem Kollegen gegeben, um die Werte 1 2 3 4 .... 15 15 ..... 4 3 2 1
mit nur eins für die Schleife , keine Funktionen , keine goto-Anweisungen und zu drucken ohne die Verwendung von bedingten Anweisungen oder ternären Operatoren .
Also habe ich Typecasting verwendet, um es zu lösen, aber es ist keine exakte Lösung, da 15 nicht zweimal gedruckt wird.
%Vor% Ausgabe : 1 2 3 4 ... 15 14 13 .... 2 1
Irgendwelche alternativen Lösungen?
Sie können eine Schleife von 1 bis 30 durchführen und dann die Tatsache verwenden, dass (i / 16) für Ihren aufsteigenden Teil "0" und für Ihren absteigenden Teil "1" ist.
%Vor% XOR-Bit # 4 (d. h. j & 0x10
) mit Bits 3: 0. Sie müssen einen Weg finden, um dieses Bit in 4 Positionen zu "wiederholen".
Ich habe viele komplizierte Antworten gesehen, aber niemand hat die Symmetrie ausgenutzt wie .
%Vor% In Aktion bei ideone (minus lexical_cast
):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
Es funktioniert einfach und für jede Größenordnung der oberen Grenze (so weit wie Ihr Computer als genügend Speicher).
Das, was ich mir ausgedacht habe. Es geht in die andere Richtung, dh: 15 - & gt; 0 - & gt; 15. Nur noch mehr zum Nachdenken. Verwendet mod und k, um herauszufinden, ob die Zahl negativ ist. Ich - J treffe mich in der Mitte. Es ist keineswegs perfekt und es gibt einige andere bessere Antworten.