Diese Herausforderung besteht aus zwei Teilen. Der Gewinner ist die Lösung mit der niedrigsten Gesamtbytezahl. Für beide Herausforderungen muss dieselbe Sprache verwendet werden.
Teil 1:
Schreiben Sie eine Funktion oder ein Programm, das einen Satz mit nur gültigen Wörtern als Eingabe verwendet und eine Liste der verwendeten Zeichen, der Häufigkeit, mit der jeder Buchstabe verwendet wird, und der Anzahl der Buchstaben in jedem der Wörter im ursprünglichen Satz ausgibt. Die Ausgabe dieses Programms muss eine gültige Eingabe für das nächste Programm sein (genau so, wie sie ausgegeben wird).
Ich werde weiter unten Beispiele und detaillierte Regeln hinzufügen.
Teil 2:
Schreiben Sie eine Funktion oder ein Programm, das die Ausgabe des ersten Programms als Eingabe verwendet, diese Liste englischer Wörter verwendet und einen Satz mit den Informationen aus der Ausgabe erstellt. Der Satz muss nicht mit dem ursprünglichen Satz identisch sein.
Mehr Informationen. Regeln und Einschränkungen:
Teil 1:
- Die erste Eingabe kann in jedem geeigneten Format erfolgen, mit oder ohne Anführungszeichen, als Funktionsargument oder von STDIN, mit oder ohne Klammern usw.
- Der Eingabesatz enthält keine Interpunktion oder Sonderzeichen, außer einem Punkt am Ende. Mit Ausnahme des Punktsymbols befinden sich alle Zeichen in der Eingabe in der Wortliste.
- Der erste Buchstabe des Satzes wird in Großbuchstaben geschrieben, der Rest in Kleinbuchstaben.
- Die Ausgabe von Teil 2 muss mit dem gleichen Großbuchstaben wie der ursprüngliche Satz beginnen. Es wird daher nicht empfohlen, die Eingabe in Kleinbuchstaben umzuwandeln (aber OK).
- Die Ausgabe kann in jedem geeigneten Format erfolgen:
- Es muss möglich sein, die Ausgabe direkt in das nächste Programm / die nächste Funktion einzufügen
- Beim Kopieren und Einfügen können keine Änderungen vorgenommen werden. Die gesamte Ausgabe muss als Ganzes kopiert und eingefügt werden, nicht in Teilen.
- Sie können beispielsweise ein Histogramm aller Buchstaben des Alphabets oder nur der verwendeten Buchstaben ausgeben (im Allgemeinen alles, was zum Abschließen von Teil 2 erforderlich ist).
- Sie können keine Liste von Zeichen ausgeben, bei denen mehrere Vorkommen wiederholt werden. Zum Beispiel
The queuekann eine Ausgabe nicht nachgeben:Teeehquu (3,5)sollte es so etwas wie:Tehqu, (1 3 1 1 2),(3 5).
Teil 2:
- Das Programm / die Funktion muss die Eingabe genau wie in Teil 1 akzeptieren (eine Ausnahme, siehe Kommentar unten zum Eingeben des Dateinamens).
- Wenn umgebende Klammern, Anführungszeichen oder Ähnliches erforderlich sind, um die Eingabe zu analysieren, müssen diese Teil der Ausgabe von Teil 1 sein.
- Die Wortliste finden Sie hier.
- Die Wortliste kann entweder lokal gespeichert
w.txtoder über die URL abgerufen werden. Die URL zählt nur 5 Bytes, sodass Sie keinen URL-Shortener benötigen. - Wenn das Programm eine Datei nicht ohne das Lesen der Namen als eine Eingabe von STDIN (ich glaube , das öffnen kann
heißtder Fall für Pyth war zumindest), dann kann der Dateiname als separate Eingabeargument genommen werden.
- Die Wortliste kann entweder lokal gespeichert
- Die Ausgabe darf nur ein Satz (Liste der gültigen Wörter) sein, der mit einem Punkt und einer optionalen Newline endet.
- Die Ausgabe muss Wörter mit der gleichen Anzahl von Buchstaben enthalten wie der ursprüngliche Satz in Teil 1 (in der richtigen Reihenfolge).
- Alle Buchstaben, die im ursprünglichen Satz verwendet wurden, müssen in der neuen Ausgabe verwendet werden.
- Der Satz muss mit dem gleichen Großbuchstaben wie der ursprüngliche Eingabesatz beginnen und mit einem Punkt enden.
Beide Teile:
- Die Ausführung beider Teile sollte nicht länger als 2 Minuten dauern (das zufällige Heraussuchen von Wörtern, bis eine Lösung gefunden wurde, wird nicht akzeptiert).
Mit den oben aufgeführten Regeln sollte es eine faire Chance geben, dass genau derselbe Satz wiedergegeben wird, dies ist jedoch keine Voraussetzung.
Beispiele:
In den folgenden Beispielen werden einige verschiedene Eingabe- und Ausgabeformate gezeigt. Viele weitere werden akzeptiert.
Teil 1:
Eingang:
Zulus win.
Ausgabetyp 1:
Z i l n s u w
1 1 1 1 1 2 1
5 3
Ausgabetyp 2:
(('Z',1),('i',1),('l',1),('n',1),('s',1),('u',2),('w',1)), (5,2)
Ausgabetyp 3:
'Zilnsuuw',[1,1,1,1,1,2,1],[5,2]
Teil 2:
Eingabe: Eine genaue Kopie der Ausgabe von Teil 1. Ausgabe:
Zulus win.
Beachten Sie, dass andere Wortkombinationen akzeptiert werden, solange sie mit a beginnen Z und das erste Wort 5 Buchstaben und das zweite 3 Buchstaben hat.
Der kürzeste Code in Bytes gewinnt.
f1, in die eingefügt wird, f2muss alle in der Challenge angegebenen Daten enthalten. In der Ausgabe von können keine zusätzlichen Daten enthalten sein f1. Es können keine Daten "gespeichert" werden f1, um Informationen verfügbar zu machen, wenn Sie diese von aufrufen f2. f1Pro Aufruf kann nur eine Zeichenfolge als Eingabe verwendet werden.
