Ausgehend von einer Liste von N
Ganzzahlen mit jeweils N
Ziffern wird eine Zahl ausgegeben, die sich von der ersten Ziffer aufgrund der ersten Ziffer, der zweiten Ziffer aufgrund der zweiten Ziffer usw. unterscheidet.
Beispiel
Angesichts dieser Liste:
1234
4815
1623
4211
Die 2932
erste Ziffer der ersten Ziffer unterscheidet sich von der ersten Ziffer der ersten Ziffer, die zweite Ziffer unterscheidet sich von der zweiten Ziffer der zweiten Ziffer usw. Daher wäre dies eine gültige Ausgabe.
Eingänge
- Sie können sowohl die Liste als auch
N
als Eingabe oder nur die Liste verwenden, wenn Sie dies wünschen. - Jede Ganzzahl in der Liste muss so viele Stellen haben wie die Länge der Liste (
N
) - Zahlen haben keine führenden Nullen
- Die Eingabeliste muss Zahlen und keine Zeichenfolgen enthalten.
- Sie können Eingaben als Funktionsargumente
STDIN
oder ähnliches verwenden. - Sie können davon ausgehen, dass die Liste nicht länger als 10 Elemente sein wird (und keine Zahl in der Liste größer als
2147483647
).
Ausgänge
- Es reicht nicht aus, dass die Ausgabe nicht in der Liste enthalten ist. Die Ziffern müssen sich wie oben beschrieben unterscheiden.
- Sie können eine beliebige Ziffernauswahlstrategie verwenden, die die Einschränkung verschiedener Ziffern berücksichtigt.
- Die Nummer darf keine führenden Nullen haben
- Sie können die Nummer über ausgeben
STDOUT
, von einer Funktion zurückgeben usw.
Testfälle
Input:
12345678
23456789
34567890
45678901
56789012
67890123
78901234
89012345
Possible output: 24680246
Input:
1
Possible output: 2
Wertung
Das ist Code-Golf , also gewinnt die kürzeste Antwort in Bytes.
code-golf
number
number-theory
Tödlich
quelle
quelle
STDIN
Ganzzahl konvertieren , bevor wir sie analysieren?STDIN
ist Zeichenfolge standardmäßig ...Antworten:
Gelee,
87 Bytes1 Byte gespart dank Dennis.
Probieren Sie es online!
Erläuterung
Konvertiert jede Ziffer in
1
, mit Ausnahme von0
und1
wird zu2
.quelle
CJam (
15 bis14 Bytes)Online-Demo
Vielen Dank an Adnan für die Einsparung von einem Byte.
Präparation
quelle
i2%)
könnte49&)
direkt mit Zeichen anstatt mit ASCII-Codes gearbeitet werden.Python 2,
4745 BytesVielen Dank an @xnor für das Golfen mit 2 Bytes!
Teste es auf Ideone .
Wie es funktioniert
`x`
ergibt eine Stringdarstellung der Liste x .Für den ersten Testfall ergibt dies den String
[1::n+3]
jedes abruft (n + 3) -ten Zeichen - wobei n die Länge von x mit dem zweiten Ausgang. Bei 2 Zeichen,
wird die erste Ziffer der ersten Ziffer, die zweite Ziffer der zweiten Ziffer usw. abgerufen.Wir nehmen nun die Zahl modulo 10 n ÷ 2 , um die erste Ziffer im Bereich [0, 4] abzubilden .
Für 93579135 erhalten wir 93579135% 50000000 = 43579135 .
Schließlich addieren wir zum letzten Ergebnis 10 n ÷ 9 , was - von 9 auf 0 umlaufend - alle Ziffern um 1 (kein Übertrag) oder 2 (mit Übertrag) erhöht .
Für 43579135 erhalten wir 43579135 + 11111111 = 54690246 .
quelle
MATL,
11109 BytesNimmt nur einen Spaltenvektor von ganzen Zahlen als Eingabe.
N
wird nicht geliefert.Probieren Sie es online
Erläuterung
quelle
2
: matl.tryitonline.net/…VXd9\QV!U
Pyth, 11 Bytes
Einfache Schleife, ändern Sie jede Ziffer auf 1, außer 1 wird 2.
quelle
Q
undk
! Sie können jedoch ein Byte mit während ders.eh-12@`b
Retina,
3938371 Byte gespeichert danke Martin!
Erfordert einen nachgestellten Zeilenvorschub in der Eingabe.
Erhält Diagonalen und übersetzt 0 und 2-9 zu 1 und 1 zu 2.
Die Grundidee, um die Diagonalen zu erhalten, besteht darin, ein Capture für jede Zeile über die aktuelle Zeile zu verschieben und dann ein Capture zu verbrauchen, das mit einem Zeichen übereinstimmt, und dann das nächste Zeichen beizubehalten.
Probieren Sie es online aus
quelle
J,
2622 BytesÄhnliche Annäherung an die anderen unter Verwendung der
<= 1
undincrement
Methode der Diagonale.Verwendung
Benötigt nur die Liste der ganzen Zahlen als Argument.
quelle
Python 2, 54 Bytes
quelle
-~n
Java, 94 Bytes
Reine numerische Operationen für den Gewinn! :)
Beispiel Input / Output:
Volles Programm (mit ungolfed Code):
quelle
Java, 93 Bytes
Ungolfed
Ausgabe
quelle
J, 37 Bytes
Kann wahrscheinlich Golf spielen, aber ich habe vergessen, ob es einen Befehl für "Diagonalen" gab.
quelle
n
mit übernehmen<list> (#:~#&10) <n>
. Die erste Diagonale mit gefunden werden ,(< 0 1) |: <list>
wo(< 0 1)
sie ein Feld für die Achsen auszuwählen, die beide mit mit|:
Reng v.3.3, 60 Bytes
Für Reng war das ziemlich einfach. Probieren Sie es hier aus! Die Eingabe ist eine durch Leerzeichen getrennte Liste von Zahlen.
1: init
k
ist die Anzahl der Eingänge (Anzahl der Zahlen), und wir dekrementieren um 1 und stellen für die Schleifenstufe wieder her.aií
Nimmt alle Eingaben.r
Kehrt den Stapel für die Verarbeitung von Eingaben um.1ø
geht zur nächsten Zeile.2: Schleife
1[
Nimmt den obersten Gegenstand vom Stapel und legt ihn auf einen neuen Stapel.å
teilt es in Ziffern auf.{$}
drückt einen Codeblock, der die Operation "drop" enthält; Dies wird mehrmals wiederholtk
(k*
) und der Codeblock wird gelöscht ($
.k1-#k
dekrementiertk
.)9(
setzt9
den STOS und-
subtrahiert den TOS vom STOS.#o
speichert diese Zahl ino
unda$;
löscht alle Mitglieder des Stapels.]
schließt den übergeordneten Stapel.o
setzto
zurück auf Das ist unsere Ziffer, die wir speichern.)
Verschiebt sie nach unten, damit wir unsere Schleife fortsetzen können. Prüfts
normalerweise auf Nichteingabe (dh Gleichheit mit-1
), aber wir können sie verwenden, um aus unserer Schleife auszubrechen, wennk == -1
. Sos^
geht auf wennk == -1
.$
fälltk
vom Stapel und unsere Schleife beginnt von vorne.3: endgültig
<
richtet den Zeiger nach links und$
fälltk
vom Stapel.b
ist ein linker Spiegel, also treten wir durch ihn hindurch, aber er prallt zurück, wenn wir auf einen Spiegel mit Stapelbedingung treffen;
.!n
Gibt nur dann eine Ziffer aus, wenn wir nach links gehen.~
Beendet das Programm, wenn wir mit dem Drucken fertig sind.quelle
Mathematica 52 Bytes
Dies folgt dem Ansatz von Peter Taylor und anderen (ohne Verwendung von ASCII-Codes).
Beispiel
quelle
ClojureScript, 58 Zeichen
Die Typanforderungen machten dies etwas länger als nötig, und
map-indexed
so viele Zeichen zu haben, half nicht.Häufig sind meine Einsendungen auch für Clojure gültig, dies nutzt jedoch einige von ClojureScripts Leakiness mit JavaScript. Die Subtraktion einer Zahl und eines Strings zwingt den String zu einer Zahl - also
(- 9 "5")
gleich4
.quelle
PHP, 46/41/40 Bytes
Verschiedene Ziffernwähler zum Vergleich. Ich dachte, "9-stellig" wäre am kürzesten, aber der Sonderfall, der erforderlich ist, um eine Null aus der ersten Ziffer herauszuhalten, überfordert sie.
Aus CLI-Argumenten gespeist:
quelle
Ruby, 21 Bytes
Ein volles Programm. Laufen Sie mit der
-n
Flagge. Verwendet die folgende Abbildung:n -> n%2+1
.quelle
JavaScript (ES6), 41
Der% 9 + 1-Trick stammt aus Suevers Antwort. Ausnahmsweise einmal
.reduce
Beats.map
. Beachten Sie, dass der+=
Operator verwendet wird, um Klammern zu vermeiden.quelle
Perl, 18 Bytes
Beinhaltet +1 für
-p
Führen Sie mit den Eingabezeilen auf STDIN. Ausgang ist 1, außer 2, wenn die Diagonale 1 ist
cantor.pl
quelle
Pyth, 14 Bytes
Probieren Sie es online!
quelle