Einführung
Diese Herausforderung besteht darin, die größte Zahl zu finden, wobei y Ziffern von der ursprünglichen Zahl n mit x Ziffern entfernt werden.
Angenommen y=2 n=5263 x=4
, die möglichen Zahlen, die y = 2 Ziffern entfernen, sind:
[52, 56, 53, 26, 23, 63]
Die größte Zahl 63
muss also für dieses Beispiel ausgegeben werden.
Eine andere Logik wäre: Suchen Sie für jedes y von links nach rechts nach der Ziffer, deren nächste Ziffer größer ist, und entfernen Sie sie, andernfalls, wenn keine Übereinstimmung vorliegt, die letzten y-Ziffern .
Mit y=3 n=76751432 x=8
erklären:
y=3
76751432
-^------ remove 6 because right next 7 is greater
y=2
7751432
---^--- remove 1 because right next 4 is greater
y=1
775432
-----^ the search failed, then remove last y digits
result = 77543
Beide oben erläuterten Methoden funktionieren. Natürlich können Sie auch eine andere Methode verwenden :)
Herausforderung
Die Zahl n darf nicht mehr als 8 Stellen haben, und y ist immer größer als Null und kleiner als x .
Um ein striktes Eingabeformat zu vermeiden, können Sie die Werte y n x
wie gewünscht als Parameter in Funktion, Roheingabe oder auf eine andere gültige Weise verwenden. Vergiss nur nicht zu sagen, wie du das in deiner Antwort getan hast.
Die Ausgabe sollte die Ergebnisnummer sein.
Dies ist Code-Golf , die kürzeste Antwort in Bytes gewinnt.
Beispiel für Ein- und Ausgabe
Nochmals: Sie müssen nicht zu streng sein :)
4 1789823 7 -> 983
1 54132 5 -> 5432
3 69314 5 -> 94
2 51794 5 -> 794
Bearbeiten
Ich habe die Eingabereihenfolge geändert, um der Tatsache Rechnung zu tragen, dass einige von Ihnen den x- Wert möglicherweise nicht benötigen , um das Problem zu lösen. x ist jetzt ein optionaler Wert.
quelle
x
eine Art nutzlose Information ist.x
Eingabe den Code verkürzen kann. (Beispiel: meine Julia Antwort.)Antworten:
A-Ray ,
97 BytesMeine neue Sprache! Laut Meta ist dies erlaubt, aber wenn dies nicht akzeptiert wird, werde ich es entfernen.
Erläuterung:
Beispieleingabe (Zahl, x, y):
Ausgabe:
Sie können dies mit der .jar-Datei testen, die im Github-Link angegeben ist.
quelle
MATL , 10 Bytes
Dies verwendet die Version (9.2.1) der Sprache / des Compilers, die älter als diese Herausforderung ist.
Es werden drei Eingaben von stdin in dieser Reihenfolge benötigt: Stringlänge, Anzahl der entfernten Zeichen, String.
Beispiel
EDIT : Probieren Sie es online! (der Code in der Verbindung hat
XN
stattXn
auf Veränderungen in der Sprache nach dieser Herausforderung zu entsprechen, auch,o
wird nicht mehr benötigt)Erläuterung
(Dies kostet immer noch 2 Byte mehr, als es sollte, da sich die
nchoosek
Funktionen von Octave und Matlab unterschiedlich verhalten. In der nächsten Version des Compilers behoben.)Antwort auf die ursprüngliche Aufforderung (strengere Eingabeanforderungen): 16 Byte
Verwendet die aktuelle Version (9.2.1) der Sprache / des Compilers.
Beispiel
Erläuterung
(Das hätte 4 Bytes weniger sein sollen, aber ich brauche das,
wow...c
weil dienchoosek
Funktion von Octave im Gegensatz zu Matlab nicht mit der Zeicheneingabe funktioniert. Wird für die nächste Version des Compilers behoben.)quelle
wow
Ihr Code ist erstaunt über seine eigene Kürze;)Pyth -
1198 BytesTest Suite .
quelle
2 5263 4
.Japt, 19 Bytes
Probieren Sie es online!
Wie es funktioniert
quelle
Brachylog , 30 Bytes
Da OP die Randbedingungen für IO gelockert hat, erwartet dies
[Number, NumberOfDigitsRemoved]
als Eingabe und gibt die Antwort als Ausgabe zurück, zbrachylog_main([1789823,4], Z).
.Erläuterung
quelle
Python 3, 69 Bytes
Dies definiert eine anonyme Funktion, die alle drei Argumente akzeptiert. Unter voller Ausnutzung der Regel , dass „Sie die Werte verwenden können:
y n x
so , wie Sie es vorziehen“, habe ich zu akzeptieren , ausgewählty
undx
als ganze Zahlen undn
als String zurück . Der Rückgabewert ist eine Zeichenfolge.Nur für den Fall, dass jemand der Meinung ist, dass dies die Regeln zu weit ausdehnt, nimmt diese Version alle Eingaben als ganze Zahlen und ist 74 Bytes groß.
Und gerade für Tritte, ich schrieb auch ein zweiargumentigen Version unter
y
undn
über die Befehlszeile und Druck das ErgebnisSTDOUT
. Es sind 92 Bytes.quelle
ES6, 70 Bytes
Gibt ein numerisches Ergebnis zurück, es
y
sei denn, es ist falsch undn
eine Zeichenfolge. Ich habe mich selbst davon überzeugt, dass es immer noch funktioniert, die Rekursion in der falschen Richtung durchzuführen (meine Lösung ist nicht anwendbar, um die korrekte Rekursion durchzuführen).Auch mein erster Code Golf, bei dem ich alle drei Anführungszeichen (wenn auch nicht alle als Anführungszeichen) verwende, was mich daran hinderte, die Länge trivial zu berechnen.
quelle
Julia,
12895 BytesDies ist eine Funktion, die die drei Werte als Parameter akzeptiert und eine Ganzzahl zurückgibt.
Ungolfed:
quelle
Haskell, 64 Bytes
Anwendungsbeispiel:
(4#7)"1789823"
->"983"
.Die ursprüngliche Nummer
n
wird als Zeichenfolge verwendet. (Ich bin mir nicht sicher, ob ich die Regel "Kein strenges Eingabeformat" überstrapaziert habe, aber in der ersten Version war eine Zeichenfolgeeingabe (!) Erforderlich.)So funktioniert es: Erstellen Sie eine Liste aller Folgen von
n
, behalten Sie die Länge beix-y
und wählen Sie das Maximum aus.quelle
Ruby, 40 Bytes
Dies ist eine anonyme Funktion , die nimmt
y
undx
als ganze Zahlen undn
als String und gibt einen String zurück. Sie können es zum Beispiel so nennenund es wird zurückkehren
"63"
.quelle
MATLAB 40 Bytes
Prüfung:
quelle
Pyth, 45 Bytes
versuche es hier
quelle
JavaScript (ES6), 78
Eine rekursive Funktion mit 2 Argumenten y und d.
y
kann eine Zahl oder eine Zeichenfolge sein,d
muss eine Zeichenfolge sein.Bevor sich die Herausforderung änderte, waren es 107 - ... mit allen Ein- / Ausgabesonderheiten ...
Prüfung
quelle
n-1
sollte seiny-1
.