Überraschenderweise hatten wir noch keine einfache Herausforderung, die höchste Ziffer zu finden, aber ich denke, das ist etwas zu trivial.
Bei Eingabe einer nicht negativen Ganzzahl wird die höchste eindeutige (dh nicht wiederholte) Ziffer zurückgegeben, die in der Ganzzahl gefunden wurde. Wenn es keine eindeutigen Ziffern gibt, kann Ihr Programm alles tun (undefiniertes Verhalten).
Die Eingabe kann als einzelne Ganzzahl, Zeichenfolge oder Ziffernliste erfolgen.
Testfälle
12 -> 2
0 -> 0
485902 -> 9
495902 -> 5
999999 -> Anything
999099 -> 0
1948710498 -> 7
Dies ist Codegolf, so dass die wenigsten Bytes in jeder Sprache gewinnen!
Antworten:
05AB1E ,
43 Bytes1 Byte gespeichert , da Mr. Xcoder mitteilt, dass eine Ziffernliste eine gültige Eingabe ist.
Probieren Sie es online!
Erläuterung
quelle
2
ist nicht wahr; nur1
? : oPython 3 , 40 Bytes
2 Bytes gespart dank movatica .
Probieren Sie es online!
42 Bytes
Funktioniert sowohl für Zeichenfolgen- als auch für Ziffern-Parametertypen. Wirft einen Fehler für keine eindeutigen Ziffern, Art des Missbrauchs dieser Spezifikation:
Probieren Sie es online!
Erläuterung
lambda i:
- Deklariert eine Lambda-Funktion mit einem String oder einer Liste von Ziffern, Parameter i.max(...)
- Findet den Maximalwert des Generators.x for x in i
- Durchläuft die Zeichen / Ziffern voni
.if i.count(x)<2
- Überprüft, ob die Ziffer eindeutig ist.quelle
lambda i:max(x*(i.count(x)<2)for x in i)
Alice , 15 Bytes
Probieren Sie es online!
Erläuterung
Dies ist ein einfaches Framework für linearen Code, das vollständig im Ordinal-Modus ausgeführt wird (dh, dieses Programm arbeitet vollständig mit Zeichenfolgen). Der entfaltete lineare Code ist dann einfach:
Was es macht:
quelle
Netzhaut , 16 Bytes
Probieren Sie es online!
Erläuterung
Sortieren Sie die Ziffern.
Wiederholte Ziffern entfernen.
Holen Sie sich die letzte (maximale) Ziffer.
quelle
Kohle ,
1812 BytesProbieren Sie es online! (Link zur ausführlichen Version)
Druckt nichts, wenn keine Lösung gefunden wird. Der Trick besteht darin, dass die
for
Schleife jede eindeutige Zahl in der Eingabezeichenfolge ausgibt, ohne den Cursor zu bewegen. Der Wert wird also so lange selbst gedruckt, bis die endgültige Lösung gefunden ist.In der vorherigen Version wurden die Zeichen A bis Z gedruckt, als keine Lösung gefunden wurde, daher die Kommentare:
Probieren Sie es online! (Link zur ausführlichen Version)
quelle
Schale , 7 Bytes
Probieren Sie es online! (Testsuite, stürzt beim letzten Testfall ab, da sie keine eindeutigen Ziffern enthält)
Hierbei handelt es sich um eine Komposition von Funktionen in punktfreiem Stil (die Argumente werden nirgendwo explizit erwähnt). Übernimmt die Eingabe und gibt die Ausgabe als Zeichenfolge zurück, was in Husk einer Liste von Zeichen entspricht.
Erläuterung
* Die Prüfung auf Länge 1 erfolgt, indem der Kopf der Liste (alle Elemente außer dem letzten) genommen und negiert wird (leere Listen sind falsch, nicht leere Listen sind wahr).
quelle
Haskell, 37 Bytes
Probieren Sie es online!
Wie es funktioniert:
quelle
R , 41 Bytes
Eine anonyme Funktion, die eine Liste von Ziffern entweder als Ganzzahlen oder als einzelne Zeichenfolgen akzeptiert. Es wird
y
als optionales Argument vorberechnet , um die Verwendung von geschweiften Klammern für den Funktionskörper zu vermeiden. Liefert die Ziffer als String. Dies sieht ein wenig anders aus als die andere R-Antwort und ist am Ende das kleinste bisschen kürzer! sieht aus wie mein Kommentar da doch falsch war ...table
berechnet das Vorkommen jedes Elements in der Liste, wobeinames(table(x))
es sich um die eindeutigen Werte inx
(als Zeichenfolgen) handelt. Da die Ziffern glücklicherweise lexikografisch wie numerisch gleich geordnet sind, können wir sie weiterhin verwendenmax
.Probieren Sie es online!
quelle
table
kürzer wird (außerdem kann ich mich nie erinnern, wie ichnames
zur Arbeit komme ).<2
für ein anderes Byte. Es sollte niemals eine Null in den Zählungen geben.y=table(scan());max(names(y[y<2]))
ist ein paar Bytes kürzer.JavaScript (ES6),
464140 ByteÜbernimmt die Eingabe als Zeichenfolge. Gibt RangeError zurück, wenn keine eindeutigen Ziffern vorhanden sind.
-7 Bytes dank Rick Hitchcock
-1 Byte dank Shaggy
Testfälle
Code-Snippet anzeigen
quelle
(s,i=9)=>s.split(i).length-2?f(s,--i):i
. Sie können den Stack - Überlauf für 42 Bytes vermeiden:(s,i=9)=>s.split(i).length-2?i&&f(s,--i):i
.s=>g=(i=9)=>s.split(i).length-2?g(--i):i
und rufen Sie es dann mitf("12")()
Python 3, 40 Bytes
Funktioniert nur für Ziffernlisten. Das Edge-Case '990' funktioniert einwandfrei :)
Probieren Sie es online!
quelle
Brachylog , 8 Bytes
Probieren Sie es online!
Erläuterung
quelle
Schale ,
98 BytesVielen Dank an Leo, der eine etwas übersichtlichere Lösung bei gleicher Byteanzahl vorgeschlagen hat.
Probieren Sie es online!
Erläuterung
quelle
¬←
könnte einfacher sein=1
, das gleiche bytecount obwohl :)Mathematica, 41 Bytes
danke @Martin Ender
Hier ist Martins Ansatz für meine Antwort
Mathematica, 35 Bytes
quelle
R
4543 Bytesfunction(x)max(setdiff(x,x[duplicated(x)]))
Probieren Sie es online!
Nimmt die Eingabe als Vektor von ganzen Zahlen. Findet die duplizierten Elemente, entfernt sie und nimmt das Maximum ein. (Kehrt
-Inf
mit einer Warnung zurück, wenn es kein eindeutiges Maximum gibt.)Wird per Kommentar in eine anonyme Funktion umgewandelt
quelle
max(x[!duplicated(x)])
ist ziemlich viel kürzer, aber das ist eine gute Antwort. Ich wusste, dass meine Vorgehensweise nicht so gut war. Auch kann man dasf=
von Anfang an entfernen , da anonyme Funktionen durchaus gültige Antworten sind. Sie können TIO auch zum Testen Ihrer Funktionen verwenden, wenn Sie dieses Format verwenden: Probieren Sie es online aus!duplicated
aber ich habe mir tatsächlich eine andere, kürzere Antwort ausgedacht!Ruby , 42 Bytes
Probieren Sie es online!
quelle
->x{x.chars.select{|r|x.count(r)<2}.max}
APL (Dyalog Unicode) , 10 Zeichen = 19 Byte
Methode: Multiplizieren Sie Elemente, die mehrfach vorkommen, mit Null und verfeinern Sie dann das höchste Element.
⌸
für jedes einzelne Element und seine Indizes im Argument:×
multiplizieren Sie das einzigartige Element∘(
…)
Mit:1=
der Boolesche Wert, ob man gleich ist≢
die Anzahl der Indizes (wie oft das eindeutige Element vorkommt)⌈/
das Maximum davonProbieren Sie es online!
APL (Dyalog Classic) , 15 Byte
Probieren Sie es online!
Identisch mit den oben genannten, aber verwendet
⎕U2338
anstelle von⌸
.quelle
Bash + Coreutils,
3028 Bytes-2 Bytes dank Digital Trauma
Probieren Sie es online!
Bash + Coreutils, 20 Bytes
Probieren Sie es online!
Wenn die Eingabe als Ziffernliste erfolgt, eine pro Zeile, können wir die Fold-Phase überspringen. Das fühlt sich an wie Betrug.
quelle
grep -o .
durchfold -1
, um 2 Bytes zu sparen. Ich bin damit einverstanden, dass eine als Liste von Ziffern angegebene Ganzzahl die Regeln zu weit ausdehnt.Python 2 , 39 Bytes
Probieren Sie es online!
quelle
C # (.NET Core) ,
279786585775 BytesProbieren Sie es online!
Vielen Dank @CarlosAlejo
quelle
using System.Linq;
.OrderBy(...).Last()
statt.OrderByDescending(...).First()
, zum Beispiel. Oder noch besser, ändern Sie Ihren letzten Teil mit.Max(i=>i.Key)
nach derWhere
Klausel.JavaScript (ES6),
52 bis50 ByteÜbernimmt die Eingabe als Ziffernliste. Gibt zurück,
0
wenn keine eindeutigen Ziffern vorhanden sind.Testfälle
Code-Snippet anzeigen
quelle
Japt ,
121110 BytesNimmt die Eingabe als ein Array von Ziffern.
Probier es aus
Erläuterung
quelle
Java (OpenJDK 8) ,
898579 BytesProbieren Sie es online!
-6 Bytes dank @ KevinCruijssens Einsicht!
quelle
return i>0?i:0;
mitreturn i;
. Die Ausgabe ist -1 für den Testfall[9,9,9,9,9,9]
, aber das ist in Ordnung mit der Herausforderung: " Wenn es keine eindeutigen Ziffern gibt, kann Ihr Programm alles tun (undefiniertes Verhalten). "0
. Es ist etwas, das ich im vorherigen Golf beaufsichtigt habe! :)APL (Dyalog) , 14 Bytes
-2 dank TwiNight.
⌈/
der größte von⊢
die Argumente×
multipliziert mit1=(
…)
Der Boolesche Wert für jeden, bei dem einer gleich ist+/
die reihensummen von∘.=⍨
ihre GleichheitstabelleProbieren Sie es online!
quelle
0
es sich mit Ausnahme von sich0
selbst nie um die höchste eindeutige Ziffer handelt , können Sie 1 Byte speichern, indem Sie×
stattdessen ein/⍨
weiteres Byte speichern und dieses in einen ZugPHP , 40 Bytes
Probieren Sie es online!
PHP , 42 Bytes
Probieren Sie es online!
quelle
<?=array_flip(count_chars($argn))[1]-48;
Java (JDK) , 67 Byte
Probieren Sie es online!
quelle
Mathematica, 42 Bytes
quelle
F # , 88 Bytes
Probieren Sie es online!
Ein verbesserter Ansatz von meinem ersten Versuch führt zu weniger Bytes.
Points of Interest:
fst
undsnd
geben das erste und zweite Element eines Tupels zurück.quelle
Gelee , 9 Bytes
Probieren Sie es online!
quelle
Pyth, 6 Bytes
Testsuite
Erläuterung:
quelle
Perl 5 , 59 Bytes
Probieren Sie es online!
quelle
-F
Flagge auf perlrun nachschlagen )