Eine meiner Lieblingsherausforderungen auf dieser Website sind Quellenbeschränkungen . Diese Herausforderungen stellen eine computerlesbare Einschränkung dar, die die Quellen möglicher Antworten passieren müssen. Ich mag diese Herausforderungen so sehr, dass ich seit einiger Zeit an einer Golfsprache arbeite, die entwickelt wurde, um diese Herausforderungen zu meistern. Jetzt möchte ich die Herausforderung auf Sie ausweiten. Ihre Aufgabe ist es, eine Sprache zu entwerfen, um eine Vielzahl von eingeschränkten Quellenaufgaben zu lösen. Sie werden Zeit haben, eine Sprache zu entwerfen und zu implementieren. An diesem Punkt werden Änderungen und neue Ergänzungen nicht konkurrieren und alle Einsendungen werden sich einer Reihe von Herausforderungen stellen , bei denen die Quellen beschränkt bleiben.
Wertung
Bevor die Herausforderung veröffentlicht wird, werde ich eine Liste einfacher zu lösender Herausforderungen und eine Liste der zu befolgenden Quellenbeschränkungen erstellen. Für jeden Abgleich von Herausforderung und Quellenbeschränkungen kann Ihre Sprache zwischen 0 und 2 Punkten verdienen. (Es wird 10 Herausforderungen und 10 Einschränkungen geben, die zu 100 Gesamtkombinationen führen.) Eine Sprache wird gewertet
- 1 Punkt, wenn die Aufgabe mit der Einschränkung in weniger als 150 Bytes abgeschlossen werden kann
- 2 Punkte, wenn die Lösung die kürzeste Lösung einer konkurrierenden Sprache ist (bei Stimmengleichheit erhalten beide Sprachen 2 Punkte)
- 0 Punkte, wenn sie kein Programm erstellen können, das die Aufgabe unter der Einschränkung in weniger als 150 Bytes abschließt.
Ihre Punktzahl ist die Summe aller Punkte, die Sie in jedem möglichen Match gesammelt haben. Das Ziel ist es, die höchste Punktzahl zu erzielen. Andere Personen können Ihnen dabei helfen, Ihre Lösungen für jede Herausforderung zu verbessern und Ihre Punktzahl zu verbessern.
Ich werde 4 Elemente jeder Liste zum Zeitpunkt der Veröffentlichung und weitere 8 eine Woche nach der zweiten Antwort offen legen. In einem Matching, bei dem beide Teile vor der ersten Woche aufgedeckt wurden, dürfen Sie nur 1 Punkt erzielen (kürzeste Einsendung zählt nicht). Auf diese Weise können Sie eine Vorstellung davon bekommen, wie gut sich Ihre Sprache während der Arbeit an ihr anhäuft, aber Sie können Ihre Sprache nicht einfach so gestalten, dass alle Herausforderungen und Einschränkungen berücksichtigt werden.
Ich werde der Frage einen Hash der beabsichtigten Kategorien hinzufügen, damit Sie sicher sein können, dass ich sie während der Woche nicht zum Vorteil einer Partei ändere. Außerdem werde ich niemandem die versteckten Parameter mitteilen, bis die Woche um ist, und auch nicht selbst an der Herausforderung teilnehmen.
Bereits vorhandene Sprachen
Diese Herausforderung steht allen vorhandenen Sprachen offen. Wenn Sie jedoch nicht der Autor der Sprache sind, geben Sie Ihrer Antwort ein Community-Wiki, damit andere Mitglieder unserer Community direkt zum Ergebnis beitragen können. Befehlszeilen-Flags müssen keinen Einschränkungen unterliegen, jedoch sollte jedes Programm mit denselben Befehlszeilenargumenten ausgeführt werden (dh Sie sollten eines auswählen und dabei bleiben). Diese addieren sich nicht zu Ihrer Byteanzahl.
Herausforderungen und Einschränkungen
Die ASCII-Codierung Ihrer Binärdateien unterliegt Einschränkungen, unabhängig von der verwendeten Codepage. Einige dieser Links verweisen auf eine auf der Website vorhandene Frage, von der sie ihre Anforderungen für Herausforderungen und Quellenbeschränkungen für Einschränkungen erben. Sie können alles ignorieren, was "eingebaute Elemente verbietet" oder vorhandene Metakonsensen für die verknüpften Herausforderungen überschreibt.
Zur Warnung: Versuchen Sie nicht, einen Anwalt zu regieren. Ich weiß, dass es sich um einen Wettbewerb handelt, aber da es im Wesentlichen 100 verschiedene Teilherausforderungen gibt und ich einfach nicht garantieren kann, dass alle von ihnen völlig unproblematisch sind. Versuche einfach Spaß zu haben.
Herausforderungen
Beschränkungen
Bytes sind in aufsteigender Reihenfolge (jedes Byte ist größer als das letzte)
Quellcode ist ein Palindrom
Die übrigen Kriterien haben einen sha512-Hash von:
4de5eca33c6270798606cf1412820c4ce112d8b927ef02877f36795b2b15ffacca51ea598fa89b8d6bc9f4cde53810e0e7ade30e536e52e28f40a6a13841dfc5 -
quelle
Antworten:
Breite
Der Interpreter ist noch in Arbeit (ich habe noch einige unbenutzte Befehlsfenster). Das Repo mit mehr Dokumentation finden Sie hier .
Dennis hat Width vor weniger als einer Minute zu TIO hinzugefügt: Try It Online!
Width ist eine esoterische stapelbasierte Sprache, die ich kürzlich auf der Grundlage von Ideen entwickelt habe, die ich zum ersten Mal in dieser Frage verwendet habe . Es hängt ganz davon ab, wie breit, mehr oder weniger, ein Buchstabe in einer "normalen" Schriftart ist. Die einzigen Zeichen, die etwas tun, sind Buchstaben, Groß- und Kleinbuchstaben. Alle anderen Zeichen werden ignoriert. Ich habe die Buchstaben in 10 verschiedene Breitenkategorien aufgeteilt, die die 10 verschiedenen Aktionen bilden, die in Width möglich sind:
2
,5
und6
ermöglichen den Zugriff auf die Befehle, von denen die meisten mit dem Stapel interagieren. Weitere Informationen finden Sie auf derinfo.txt
Seite im Github-Repo.Dies ist der Python-Code des Interpreters. Ich muss noch einige Befehle hinzufügen, und ich überlege, wie ich mit der Fehlerbehandlung umgehen soll, aber ansonsten sollte sie vollständig sein. (Irgendwann werde ich auch ein Flag hinzufügen, um das Testen mit einer abstrakteren Syntax zu ermöglichen, da diese Sprache sonst eine große Herausforderung darstellt.)
quelle