Updates: Zeitlimit entfernt. Sie müssen in der Lage sein, die Ausgabe zu beschreiben - siehe neue Regel.
Ein Pangram ist ein Satz, der jeden Buchstaben des Alphabets mindestens einmal verwendet, z.
Ein perfekter Pangram benutzt jeden Buchstaben genau einmal.
Erwägen Sie, ein Programm zu schreiben, das ein perfekter Pangram ist und das 95 druckbare ASCII- Zeichen (Hex-Codes 20 bis 7E) als Alphabet verwendet:
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
Ein solches Programm muss genau 95 Zeichen enthalten, wobei jedes druckbare ASCII-Zeichen genau einmal vorkommt, jedoch in beliebiger Reihenfolge. (Somit gibt es 95! = 1,03 × 10 148 Möglichkeiten.)
Ihre Aufgabe ist es, dieses Programm so zu schreiben, dass die Anzahl der druckbaren ASCII-Zeichen, die auf stdout gedruckt werden, so hoch wie möglich (dh produktiv) ist.
Ihr Ergebnis ist die Anzahl der druckbaren ASCII - Zeichen Ihres Programm gibt (die Gesamtmenge, nicht die unterschiedliche Menge: AABC
Noten 4 während ABC
Partituren 3) . Die höchste Punktzahl gewinnt.
Einzelheiten
- Die Ausgabe kann beliebige Zeichen (einschließlich Duplikate) enthalten, aber nur Instanzen der 95 druckbaren ASCII-Zeichen werden für Ihre Punktzahl berücksichtigt.
- Mit diesem JSFiddle können Sie die Anzahl der druckbaren ASCII-Zeichen in einer beliebigen Zeichenfolge zählen.
- Wenn Ihre Sprache keine Standardsprache ist, verwenden Sie die am besten geeignete Alternative.
- Ihr Programm ...
- muss eine begrenzte Laufzeit haben (das Zeitlimit wurde entfernt)
- muss endliche Ausgabe haben
- Kann Kommentare enthalten
- muss ohne (nicht erfasste) Fehler kompiliert und ausgeführt werden
- Darf nicht zur Eingabe auffordern oder eine Eingabe erfordern
- muss zeitinvariant und deterministisch sein
- darf keine externen Bibliotheken verwenden
- darf keine Netzwerkverbindung erfordern
- darf keine externen Dateien verwenden
- (Sie können die Programmdatei selbst verwenden, solange das Ändern des Dateinamens das Verhalten des Programms nicht verändert.)
- Wenn diese Aufgabe nicht möglich ist, ist eine Sprache einfach zu schlecht.
- Sie müssen Ihre genaue Ausgabe angeben oder genau beschreiben, wenn sie zu groß ist, um in einen Beitrag zu passen . Sie müssen Ihr Programm nicht unbedingt ausführen. Solange es würde in einer endlichen Menge an Zeit auf einem Computer mit einer unbegrenzten Menge an Speicher ausgeführt ist es gültig.
Beispiel
Dieses vereinfachte Python 2-Programm ist eine mögliche Lösung:
print 9876543210#!"$%&'()*+,-./:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghjklmoqsuvwxyz{|}~
Es gibt 9876543210
10 druckbare ASCII-Zeichen aus und erhält somit 10 Punkte.
a
sechs Billiarden Mal führen würde, bei denen es nicht einmal möglich ist, eine genaue Obergrenze zu erhalten Zeichenanzahl. Trotzdem bin ich immer noch stolz auf meine 95, auch wenn sie etwas klein ist. Größe ist nicht alles, weißt du?