Bearbeiten: Darf Leerzeichen wiederverwenden.
Ihre Aufgabe ist es, n Programme (oder Funktionen oder Funktionskörper ohne Verwendung von Parametern oder Funktionsnamen) in derselben Sprache zu schreiben . Das k- te Programm sollte die (Kardinal-) Zahl k in Standard-Englisch in Kleinbuchstaben ausgeben (mit optionalem abschließendem Zeilenumbruch). Das erste Programm sollte also ausgegeben werden one
, das zweite sollte ausgegeben two
werden usw. Bei einer Zahl mit zwei Teilen sollten diese durch einen Bindestrich getrennt werden twenty-one
.
Zwei Programme in Ihrer Übermittlung können jedoch keine Nicht-Leerzeichen oder Leerzeichen gemeinsam verwenden, um nützliche Arbeiten auszuführen. Wenn zum Beispiel Ihr erstes Programm gerade ist "one"
, dann kann keines von "
o
n
und e
wieder in Ihren anderen Programmen verwendet werden.
Sie können in zwei oder mehr Programmen Leerzeichen (Leerzeichen, Zeilenumbrüche und Tabulatoren) verwenden, wenn diese nur als Trennzeichen oder Einrückung dienen und nichts für sich tun. Sie können sie also nicht in der Whitespace- Sprache wiederverwenden und Sie können sie nicht in Zeichenfolgen in mehr als einem Programm verwenden.
Sie können nur druckbare ASCII-Zeichen, Tabulatoren und Zeilenumbrüche (einschließlich CR und LF) verwenden. Jedes Programm muss mindestens 1 Zeichen enthalten.
Ihre Punktzahl ist die Summe von 1 / Programmgröße ^ 1,5. Höchste Punktzahl gewinnt. Sie können dieses Stack-Snippet ( oder diesen CJam-Code ) verwenden, um Ihre Punktzahl zu berechnen:
function updatescore(a){var l=a.value.split("\n"),s=0;for(var i=0;i<l.length;i++){var t=l[i].length;t-=t&&l[i][t-1]=="\r";if(t)s+=Math.pow(t,-1.5);}document.getElementById('result').textContent=s;}
<textarea id="input" placeholder="Put your code here, one per line." style="width:100%;height:150px;box-sizing:border-box" oninput="updatescore(this)" onpropertychange="updatescore(this)"></textarea><div>Your score: <span id="result">0</span></div>
quelle
Antworten:
gs2 , 0,38669200758867045
Entfernen Sie Whitespace aus allen diesen Programmen, aber drei , es ist nur für die (Husten-) Lesbarkeit. Eins und Sechs sind gs2-Programme, die abstürzen (indem sie den Stack unterlaufen), wodurch sie in Quines umgewandelt werden .
eins (3 Bytes)
zwei (1384 Bytes)
drei (92 Bytes)
Viele signifikante Leerzeichen, hier ist also ein Hex-Dump. Am Anfang steht ein einzelner Zeilenvorschub:
vier (276 Bytes)
fünf (178 Bytes)
sechs (3 Bytes)
quelle
20
durch7E
,09
(Tab),0A
(LF) und0D
(CR), richtig?1
in fünf war ein Tippfehler; Ich bin gegangen und habe es entfernt. Ich werde jetzt drei reparieren .CJam, 0,24075
Programme
Vielen Dank an @ user23013 für seinen Vorschlag, ihn
'
für sechs zu verwenden .Ausgabe, Länge, Punktzahl, verwendete Zeichen
Überprüfen Sie die Ergebnisse selbst im CJam-Interpreter .
quelle
Schlaflosigkeit , 0,100688383057110116
Nur um die Dinge in Gang zu bringen. Es ist sehr unwahrscheinlich, dass dies gewinnen wird. Nach dem derzeitigen Bewertungsschema hat jede Sprache, die
one
aus 5 oder weniger Zeichen besteht, einen überwältigenden Vorteil.eins (8 Byte, 0,04419417382415922)
zwei (9 Bytes, 0,037037037037037035)
drei (21 Bytes, 0.010391328106475828)
vier (23 Byte, 0,009065844089438033)
quelle
Headsecks , 0,044623631135793776
Hier generiert
Diese Sprache ist eine einfache BF-Substitution, bei der es nur auf den Zeichenwert modulo 8 ankommt.
Leider erzielen längere Programme eine schlechtere Punktzahl, obwohl sie zwölf erreichen können ! (Ich könnte höher kommen, wenn ich nicht druckbares ASCII und Unicode verwenden könnte.)
einer
zwei
drei
vier
fünf
sechs
Sieben
acht
neun
zehn
elf
zwölf
quelle
/// , 0,19245008972987526
Diese Antwort ist inspiriert von @ n̴̖̋h̷͉̃ã̷͉h̷̭̿d̷̰̀ĥ̷̳s Antwort, in der er sagte
quelle
SmileBASIC, .10062
"einer"
"zwei"
Meine andere Antwort ist interessanter, aber diese bekommt eine höhere Punktzahl.
Eine wichtige Strategie, um die längste Kette zu erhalten, besteht darin, MEHR Zeichen zum Speichern von EINZIGARTIGEN Zeichen zu verwenden (z. B.
x - -x
in Programm 2 zum Speicherny + y
von Programm 3).Das Problem mit dem Bewertungssystem ist, dass es 2 kurze Programme besser bewertet als 3 lange Programme. Es gibt also keinen Grund, Zeichen für spätere Programme zu speichern, wenn das aktuelle Programm länger wird.
Außerdem werden einzelne Kurzprogramme höher bewertet als eine kleinere Gesamtgröße. Wenn ich tausche
?
undPRINT
in meiner Antwort kann ich 1 Charakter speichern, aber meine Punktzahl ist HALB.Ich denke, es wäre besser gewesen, es nur auf die Anzahl der Programme mit der Gesamtgröße als Tiebreaker zu gründen .
quelle
o
...