Sie erhalten ein Array A von n streng positiven ganzen Zahlen mit n ≥ 2 .
Ihre Aufgabe ist es, jeden Eintrag A i zuzuordnen :
- 1, wenn A j mod A i für jedes j ungerade ist, so dass 1 ≤ j ≤ n und j ≤ i
- 2 wenn A j mod A i für jedes j gerade ist, so dass 1 ≤ j ≤ n und j j i
- 0 sonst (gemischte Paritäten)
Beispiel
Für A = [73, 50, 61] gilt:
- 50 mod 73 = 50 , 61 mod 73 = 61 → gemischt
- 73 mod 50 = 23 , 61 mod 50 = 11 → alles ungerade
- 73 mod 61 = 12 , 50 mod 61 = 50 → alles gerade
Daher ist die erwartete Ausgabe [0, 1, 2] .
Regeln
- Sie können anstelle von 0 , 1 und 2 drei unterschiedliche Werte (jeden Typs) verwenden , sofern diese konsistent sind. Bitte geben Sie Ihr Mapping an, wenn Sie nicht das in der Challenge beschriebene verwenden.
- Sollte diesbezüglich ein Zweifel bestehen, ist Null gerade .
- Das ist Code-Golf , also gewinnt die kürzeste Antwort in Bytes!
Testfälle
[ 1, 2 ] --> [ 2, 1 ]
[ 3, 4 ] --> [ 1, 1 ]
[ 1, 2, 3 ] --> [ 2, 1, 0 ]
[ 4, 4, 4 ] --> [ 2, 2, 2 ]
[ 73, 50, 61 ] --> [ 0, 1, 2 ]
[ 941, 459, 533 ] --> [ 1, 0, 0 ]
[ 817, 19, 928, 177 ] --> [ 1, 2, 1, 1 ]
[ 312, 463, 336, 729, 513 ] --> [ 0, 2, 0, 0, 0 ]
[ 53, 47, 33, 87, 81, 3, 17 ] --> [ 0, 0, 0, 1, 0, 2, 0 ]
[1]
,[0, 1]
und[1, 1]
Arbeit?Antworten:
Python 2 ,
686766 Bytes-1 Byte dank Mr. Xcoder
-1 Byte dank ovs
Probieren Sie es online!
Gibt
1,0,2
stattdessen zurück0,1,2
.quelle
(k<1)
durch0**k
für -1 Byte.Gelee , 9 Bytes
Gibt [1, 1], [0, 1], [1] anstelle von 0, 1, 2 zurück .
Probieren Sie es online!
Wie es funktioniert
quelle
‘ṬUḄ
mitQ€Ḅ
einem Byte speichern?Q€
könnte zurückkehren[0, 1]
oder[1, 0]
.[1]
,[1,1]
und[0,1]
sind drei verschiedene Werte, so%þœ-€0Ḃ‘Ṭ
sollte für 9 akzeptabel sein. EDIT - ah ich sehe, Sie genau diese Frage gestellt :)¹-Ƥ%"%2‘Ṭ
MATL , 12 Bytes
Diese nutzt
0
,-1
,1
statt0
,1
,2
jeweils.Probieren Sie es online! Oder überprüfen Sie alle Testfälle .
Erläuterung
quelle
C (GCC) ,
118114979291 Bytesviereinundzwanzig Bytes dank Peter Cordes ; Vorschlagen, eine andere Ausgabewertzuordnung zu verwenden;[0 1 2] ~ [3 2 1]
.[0 1 2] ~ [ ]
.for(i=0;i<n;i++,putchar...
zufor(i=~0;++i<n;putchar...
.Probieren Sie es online!
quelle
f(I,7)
Überschreibt das erste Element vonI[]
(A[]
in f ()) mit einem der Argumente, die Sie als Einheimische verwenden.f()
geht davon aus, dass arg vom Aufrufer auf dem Stack übergeben wurde, aber der Aufrufer wusste das nicht, und was sich tatsächlich auf dem Stack über der Rücksprungadresse befindetA[0]
. (dh diese UB verursachtt
undA[0]
hat die gleiche Adresse). Auf jeden Fall ist dies nur UB in Ihrer Testfunktion auf TIO.execlp("/usr/bin/objdump", "objdump", "-drwC", "-Mintel", argv[0], 0);
wiederholen, also musste ich main hinzufügen , um den Asm von TIOs gcc 7.2.1 zu erhalten, der nicht genau zu meinem Arch Linux gcc 7.2.1 passte. Nachdem ich diese Demontage wieder in asm-Quelle für die aufrufende Funktion umgewandelt hatte, konnte ich sie lokal in gdb reproduzieren und genau bestätigen, was passierte.o|=1<<(A[j]%A[i]%2)
ohne jede Lust zur Decodierung zu benötigeno
.o|=1<<...
anstatt etwas in der Art vono|=1<<(t=...
.Mathematica,
574948 BytesDies ergibt:
False.True
für 0 (gemischt)True.True
für 1 (alle ungeraden)False.False
für 2 (alle gerade)Probieren Sie es online!
Hier ist eine etwas längere Alternative (49 Bytes):
Dieser gibt zurück:
1
für 0 (gemischt)-1
für 1 (alle ungeraden)0
für 2 (alle gerade)Probieren Sie es online!
quelle
Rot , 101 Bytes
Probieren Sie es online!
Gibt
1 0
für gemischt,1
für ungerade und0
für gerade zurückquelle
JavaScript (ES6), 46 Byte
Gibt -1 (gerade), 1 (ungerade) und 0 (gemischt) zurück.
Wie es funktioniert:
Der
d
Akku wird sein:!a[d+1]
== false,!d
== 1,false - 1
== -1 )!a[d+1]
== true,!d
== 0,true - 0
== 1 )!a[d+1]
== false,!d
== 0,false - 0
== 0 )Testfälle:
Code-Snippet anzeigen
quelle
J ,
27-20BytesProbieren Sie es online!
Verwendet [1 0] [1] [0] anstelle von 0 1 2
Erläuterung:
|/~
- macht einen Tisch mit Resten:2|
ungerade oder gerade? :<@~.@}:@\:"1
- sortiere nach unten, lösche das letzte Element (immer eine Null), behalte die eindeutigen Elemente und boxe jede Zeile:quelle
2/:~@:|"1]|1]\.]
Rückgabe einer Liste von Paaren.Ruby ,
5856 BytesGibt [0, 1], [1], [0] anstelle von 0, 1, 2 zurück (dh [0] für alle geraden, [1] für alle ungeraden und [0, 1] für gemischte).
Probieren Sie es online!
quelle
Perl, 38 Bytes
Enthält
+3
für-p
Ausgänge 1 für alle gerade, 2 für alle ungeraden, 3 für gemischt
quelle
Sauber ,
956563 BytesProbieren Sie es online!
Als Lambda, nehmen
[Int]
und zurück[Int]
, Zuordnung zu:0
: gemischt1
: alles sogar-1
: alles ungeradequelle
Perl 5 ,
7169 + 1 (-a
) = 70 BytesProbieren Sie es online!
quelle
Pari / GP , 42 Bytes
Rückgabe
[0, 0], [0, 1], [1, 0]
statt0, 1, 2
.Probieren Sie es online!
quelle
Java 8,
9189 Bytestruetrue
statt2
für geradefalsefalse
statt1
für ungeradetruefalse
statt0
für gemischtErläuterung:
Probieren Sie es online aus.
quelle
Clojure, 82 Bytes
Ein vollständiges Beispiel mit Ausgabeumwandlung:
quelle