Ihre Eingabe ist eine Liste / Sequenz / Vektor / Array von 5 bis 255 positiven ganzen Zahlen, die nicht unbedingt eindeutig sind. Sie können davon ausgehen, welches Eingabeformat am besten geeignet ist und dass jede Ganzzahl (sowie die Anzahl der Ganzzahlen) einheitlich zufällig im Bereich von 5 bis 255 ausgewählt wird.
Ziel ist es, die gleiche Liste im gleichen (oder einem gleichwertigen) Format auszugeben, jedoch in aufsteigender (nicht absteigender) Reihenfolge. Eine übliche frühe Übung zum Erlernen einer Sprache. Einsendungen mit:
Eine Antwort, die richtig funktioniert und das Ziel erreicht; und
Eine zweite Antwort, die einen nervigen Bug enthält. Zwischen 1% und 10% der Zeit muss die Ausgabe eine Liste im richtigen Format sein und die richtigen Elemente enthalten, jedoch in der falschen Reihenfolge (jede Reihenfolge, außer richtig sortiert). In der restlichen Zeit muss das Programm korrekt funktionieren und das Ziel erreichen.
Die zwei Antworten müssen Levenshtein Abstand eins haben; Das heißt, wir können eines von dem anderen erhalten, indem wir ein Byte löschen, ein Byte hinzufügen oder ein Byte ändern.
Wie beim Code-Golf üblich punkten (basierend auf der kürzeren Ihrer beiden Antworten), wobei die üblichen Lücken verboten sind.
10% Bonus (Abnahme der Punktzahl), wenn der nervige Fehler unabhängig von der Eingabe ist, dh wenn der Fehler erneut verwendet wird, wird er nicht reproduziert (außer zwischen 1% und 10% der Zeit).
quelle
[5,5,5]
es ist unmöglich, die falsche Reihenfolge zu produzierenAntworten:
Python 3 , 36 Bytes
Fehlerfreie Version, 37 Bytes
Probieren Sie es online!
Nervige Version, 36 Bytes
Probieren Sie es online!
Dies hängt von der Eingabe ab und qualifiziert sich daher nicht für den Bonus.
Das Scheitern ist mit einer Wahrscheinlichkeit von rund 2% zu erwarten. Es schlägt fehl, wenn die Eingabelänge kleiner als 10 ist.
Kombiniert mit der Antwort von LyricLy ergibt dies 34 Bytes:
quelle
or1
wird als Variablenname interpretiert und löst einen Syntaxfehler aus.05AB1E , 5 * 0,9 = 4,5 Bytes
Funktionierende Lösung
Probieren Sie es online!
Erläuterung
Lösung, die den Fehler enthält
Gibt die falsche Lösung 10% der Zeit (unabhängig von der Eingabe).
Probieren Sie es online!
Erläuterung
Entspricht der funktionierenden Lösung, mit der Ausnahme, dass die Liste umgekehrt wird, wenn die ausgewählte Zahl wahr ist.
quelle
100F
und eine Fußzeile},
, mit deren Hilfe wir das Ergebnis der Funktion, die für den Eingang aufgerufen wird, mehrmals visualisieren können. Dies zeigt uns, dass die funktionierende Lösung immer korrekte Ergebnisse liefert, während die fehlerhafte Ausgabe fehlerhaft ist.Jelly , 7 × (100% - 10%) = 6,3 Bytes
Probieren Sie es online!
Buggy-Version:
Probieren Sie es online!
In beiden Links gibt es ein Test-Harness, das den Code jedes Mal 100 Mal mit der von Ihnen als Argument angegebenen Liste ausführt und dann die Ergebnisse zurückgibt.
Die Wahrscheinlichkeit für jede Eingabelänge beträgt:
Für die Länge 1 gibt es also eine Wahrscheinlichkeit von 0%, für die Länge 2 5%, für die Länge 3 8,83%, für die Länge 4 9,583% usw., bis die Länge ∞ eine Wahrscheinlichkeit von 10% hat.
quelle
0.1 - 0.1/(length!)
.Ṣ⁵X’¤¡
undṢ⁵X¤¡
sollte auch funktionieren: Buggy-Version gibt die Liste <10% der Zeit unsortiert zurück, und wenn die Eingabe einheitlich zufällig gewählt wird, sollte es funktionieren, 2 Bytes sparen.¹
zu speichernde 1 Byte löschen (die Anzahl der Bytes für die Regel = das kürzere); Außerdem gibt es nach dem zweiten6
in eine zusätzliche Zeile für das Kombinieren6.6̅%
.¹
", weil es dann in 10% der Fälle überhaupt nicht sortieren würde.Python 3, Ergebnis
5857 - 10% = 51,3Dank ovs ein Byte gespeichert.
Fehlerfreie Version, 57 Bytes
Probieren Sie es online!
Bugged Version, 57 Bytes
Probieren Sie es online!
Ich habe mich für eine Lösung entschieden, die den Bonus nutzt. Es schlägt die andere Python-Antwort nicht, aber ich hatte Spaß daran, es mir auszudenken.
quelle
C 71 * 0,9 = 63,9 Bytes
Bug-frei:
Probieren Sie es online!
Buggy:
Probieren Sie es online!
quelle
Groovy , 31 Bytes
Fehlerhafte Lösung:
Arbeits lösung:
Der Groovy-Indexoperator (die
getAt
Methode) gibt für Listen null zurück, wenn der Index größer als die Größe ist. Wenn es also ein neuntes Element gibt, bleibt es das gleiche wie die sortierte Liste, aber wenn nicht (1,99203187% Chance), wird es umgekehrt. Es wird jedoch immer ein erstes Element geben, da die Liste immer größer oder gleich 5 ist. Daher kann die 0 ina[0]
gegen 1, 2, 3 oder 4 ausgetauscht werden.quelle
Wolfram Language (Mathematica) , 29 Byte
Dies sind 26,1 Bytes mit dem Bonus, aber ich bin nicht ganz sicher, ob ich den Bonus verdiene. Bei bereits sortierten Eingaben erzeugen beide Versionen immer sortierte Ausgaben.
Fehlerfreie Version (29 Bytes)
Probieren Sie es online!
Nervige Version (30 Bytes)
Probieren Sie es online!
quelle
PHP, 70 Bytes
Fehlerfreie Version, 70 Bytes
Probieren Sie es online!
Bugged Version, 70 Bytes
Probieren Sie es online!
Die fehlerhafte Version wird 10% der Zeit in umgekehrter Reihenfolge sortiert (basierend auf einem Zufallszahlengenerator).
quelle
-r
(-2 Bytes) ist nicht erforderlich . Beitritt durch Unterstrich; Das sollte äquivalent sein (-2 Bytes). Verwenden Sieasort
anstelle vonsort
(-1 Byte).unset($argv[0]);(rand(1,9)?sort:rsort)($argv);echo join(_,$argv);
(auch 65 Bytes)Python 2 , 26 Bytes
Buggy:
Probieren Sie es online!
Ausgaben durch Ändern der Eingabeliste . Sortiert die Liste nur, wenn ihre Länge mindestens 10 beträgt. Die nicht fehlerbehaftete Version ersetzt die Liste
9
mit einem,0
um immer zu sortieren.Arbeiten:
Probieren Sie es online!
Wir können die Funktion so ändern, dass die Liste zum Preis von 4 Bytes für insgesamt 30 Bytes zurückgegeben wird:
Probieren Sie es online!
25 Bytes mit einigen Abschnitten der Regeln:
Probieren Sie es online!
Gibt ein Funktionsliteral aus, das entweder die Identität sortiert oder
id(0)
als zufällige Quelle verwendet. Wechseln Sie>
zu>=
Fix oder0
zu~0
.quelle
Schale , 6 Bytes
Buggy-Version:
Probieren Sie es online!
Korrekte Version:
Probieren Sie es online!
Erläuterung
Diese Programme sind vollständig deterministisch. Tatsächlich unterstützt Husk derzeit überhaupt keine Zufallszahlen.
Ich behaupte, dass die Ausgabe des Buggy-Programms nicht mit einer Wahrscheinlichkeit zwischen 1% und 2% sortiert ist. Bezeichnen Sie mit N = 251 die Anzahl der möglichen Werte der Elemente. Die Wahrscheinlichkeit, dass eine zufällige Liste der Länge L keine Vielfachen von 9 enthält, ist ((NK) / N) ^ L , wobei K die Anzahl der durch 9 teilbaren Werte ist (in unserem Fall K = 28 ). Die Gesamtwahrscheinlichkeit ist der Durchschnitt für 5 ≤ L ≤ 255 , was ungefähr 1,98% entspricht. Einige dieser Listen sind falsch positiv, da sie bereits sortiert sind. Die Wahrscheinlichkeit, dass eine zufällige Liste der Länge L sortiert wird, beträgt höchstens ((N + N * (N-1) / 2) / N ^ 2) ^ ⌊L / 2⌋ : wenn wir die Liste in Stücke der Länge aufteilen 2, jeder der⌊L / 2⌋- Stücke müssen sortiert werden. Die Gesamtwahrscheinlichkeit, mit der eine Liste sortiert wird, ist durch den Durchschnitt der obigen für5 ≤ L ≤ 255 , was ungefähr 0,30% ist. Somit liegt die Wahrscheinlichkeit, dass die Funktion eine nicht sortierte Liste zurückgibt, zwischen 1,67% und 1,98%.
quelle
↓9
anstelle von verwendenV¦9
und es nur9
für die richtige Version kürzen ? Dies würde dazu führen, dass es bei kurzen Eingaben immer fehlschlägt und bei längeren Eingaben immer korrekt funktioniert. Da die Eingabelänge jedoch einer zufälligen Verteilung folgt, sollte es sich dennoch um eine gültige Antwort handelnBash , 26 Bytes
Korrekte Version
Probieren Sie es online! oder überprüfen Sie die Wahrscheinlichkeiten .
Bugged Version
Probieren Sie es online! oder überprüfen Sie die Wahrscheinlichkeiten .
Nimmt Eingaben als durch Zeilenumbrüche getrennte Zahlen vor. Verwendet die eingebaute Variable
RANDOM
, die immer eine (Pseudo-) Zufallszahl im Bereich von 0 bis 32767 zurückgibt . Die Verwendung von%20
Ergebnissen führt zu einer Ausfallrate von ca. 5% (danke @Titus für die Klärung von Problemen mit%10
).Diese Zufälligkeit bedeutet, dass die Fehlerrate unabhängig von der Eingabe ist. Dies erfordert jedoch, dass das Eingabearray mindestens eine Zahl mit mehr als einer Ziffer enthält, da die Fehlerausgabe lexikografisch sortiert ist.
Alternative Version, 27 Byte
Bugged Version ersetzt die
+
mit einem%
. Probieren Sie es online aus oder versuchen Sie es fehlerhaft .quelle
%10
hat eine höhere Wahrscheinlichkeit0
,7
als8
oder zurückzukehren9
, so dass die Wahrscheinlichkeit des Scheiterns über 10% liegt;)%20
wie es Ihre Antwort tut.Pyth , Punktzahl 8 * 0,9 = 7,2
Erstes Snippet (korrektes):
Probieren Sie es hier aus!
Zweiter Ausschnitt (fehlerhafter):
Probieren Sie es hier aus!
Dank isaacg wurden zwei Bytes (und 1,8 Punkte) gespart !
quelle
.S
, die Eingabe unverändert zurückzugeben, bedeutet, dass in diesen (seltenen) Fällen die Wahrscheinlichkeit einer falschen Antwort von 10% auf 0% sinkt - im Durchschnitt also immer noch im richtigen Bereich. Natürlich sind auch 10 Exemplare in Ordnung..S
könnte auch die Eingabe selbst zurückgeben (was kein Problem wäre), aber ich meinte, es.S
könnte auch die sortierte Liste zurückgeben .O.uSNT.S
JavaScript (ES6), 24 Byte
Fehlerfreie Version (zumindest für ganze Zahlen im Bereich 0-2147483647, also alles im angegebenen Bereich):
Buggy-Version:
Hängt davon ab , a) ist der Motor Sortieralgorithmus und b) die Eingangsliste zwei Werte in der falschen Reihenfolge enthält , die aus durch 1. (Wenn die Wahrscheinlichkeit , dass die Windungen unterscheiden zu niedrig ist dann die
1
erhöht werden kann, sondern durch die Zeit , die Sie erhalten , dazu8
wird einfach nichts im Sortiment sortiert5-255
.)quelle
PHP, 62 Bytes
Inspiriert von Jo´s Lösung (und mir ist gerade aufgefallen, dass es sich um eine Portierung von Justin Mariner handelt ):
arbeiten (aufsteigend sortieren):
Buggy (ca. 5% Chance auf absteigende Sortierung):
Laufen Sie mit
-nr
quelle
Pushy , 9 Bytes - 10% = 8,1
Fehlerhafte Lösung:
Probieren Sie es online!
Arbeitslösung:
Probieren Sie es online!
Der fehlerhafte Code bewirkt Folgendes:
Der feste Code ändert sich einfach
0
zu1
. Wierandom(1, 10)
es niemals sein wird0
, wird die if-Anweisung niemals ausgeführt.quelle
MATL ,
7×0,9 = 6,36 × 0,9 = 5,4 BytesBuggy-Version:
Probieren Sie es online!
Erläuterung:
Fehlerfreie Version:
Probieren Sie es online!
Erläuterung:
quelle
Jq 1.5 , 42 Bytes
Buggy
Arbeiten (löschen Sie das =)
Unter der Annahme, dass die Leitungslängen im Bereich [5.255] gleichmäßig sind, lösen etwa 7% den Fehler aus
Probieren Sie es online!
quelle
J, 22,5 Bytes (25 Bytes - 10%)
mit Fehler:
ohne Fehler:
Probieren Sie es online!
quelle
R , 30 * .9 = 27 Bytes
(Buggy)
Probieren Sie es online!
(nicht buggy)
Die Buggy-Version sortiert in
decreasing=T
10% der Fälle nach einer einheitlichen (0,1) Verteilung. Die Un-Buggy-Version ist immerdecreasing=F
quelle
Röda , 42 Bytes - 10% = 37,8
Bug-frei:
Buggy:
Probieren Sie es online!
Dies verwendet die
currentTime
Funktion, um Zufallszahlen zu erstellen. Es scheint, dass ihre Verteilung zwischen Maschinen ein wenig variiert. Das Verhältnis20//19
kann angepasst werden, um unterschiedliche Ergebnisse für keine Byte-Strafe zu erhalten (es sei denn, es ist kleiner als99//98
).quelle
Oktave , 36 * 0,9 = 32,4 Bytes
Buggy-Version:
Probieren Sie es online!
Fehlerfreie Version:
Probieren Sie es online!
Dies sortiert den Vektor und verschiebt dann alle Zahlen um eins nach rechts, wenn eine Zufallszahl kleiner als 0,1 ist.
quelle
Java 8,
4534,2 (5038 - 10%) BytesNormale Version:
Erläuterung:
Probieren Sie es hier aus.
Bugged Version (
5139 Bytes):LD von 1:
1
hinzugefügt.Erläuterung:
Probieren Sie es hier aus.
quelle
JavaScript, 25 * 0,9 = 22,5
x eingeben
quelle