Diese Herausforderung ist vom Meme Men of Culture inspiriert .
Das Mem beinhaltet das Ausblenden von Teilen der Originalunterschrift.
Ah, ich sehe, du bist auch ein Mann der Kultur.
um es so aussehen zu lassen, als würde der Charakter etwas anderes sagen.
Ihre Herausforderung besteht darin, ein Programm zu schreiben, das anhand einer Eingabe zeigt, wie der ursprüngliche Satz ausgeblendet werden kann , um die Eingabezeichenfolge zu erhalten.
Regeln:
- Verwenden Sie ein
-
Zeichen, um ein ausgeblendetes Zeichen darzustellen. - Sie dürfen keine zusätzlichen Buchstaben hinzufügen, um die Eingabezeichenfolge zu erhalten
- Sie können Zeichenfolgenvergleiche als unabhängig von Groß- und Kleinschreibung behandeln
- Sie können Leerzeichen bei Zeichenfolgenvergleichen ignorieren
- Wenn keine Substitution möglich ist, geben Sie einen falschen Wert aus.
- Sie können auch redundantes Leerzeichen durch ein ersetzen
-
, obwohl dies nicht erforderlich ist. - Wenn mehrere Lösungen möglich sind, können Sie eine davon ausgeben.
Testfälle:
Basic:
Ah, I see you're a well.
> Ah, I see you're a --- -- ------- -- well.
Ah, I see well.
> Ah, I see ------ - --- -- ------- -- well.
Randfall 1:
What did you just say about me, you little
> false
Kantenfall 2 (bearbeitet):
*no input*
> --- - --- ------ - --- -- ------- -- -----
Mittlere:
Ah, I see you're Orwell.
> Ah, I see you're - --- o- -----r- -- well.
Ah, ymca.
> Ah, - --- y----- - m-- -- c------ a- ----.
Ah, a manual.
> Ah, - --- ------ a man -- -u----- a- --l-.
OR: > Ah, - --- ------ a man -- -u----- a- ---l.
Schwerer:
tea.
> --- - --- ------ - --- -- ---t--e a- ----.
eeeee
> --- - -ee -----e - --- -- ------e -- -e---
TL; DR: Geben Sie bei gegebener Eingabezeichenfolge eine Zeichenfolge aus, die angibt, wie die ursprüngliche Zeichenfolge an die Eingabezeichenfolge angepasst werden soll, indem Sie ein "-" für ein ausgeblendetes Zeichen verwenden. Wenn eine Substitution nicht möglich ist, geben Sie einen falschen Wert aus.
Code Golf, so dass der kürzeste Code in Bytes gewinnt.
Bearbeiten: Erläuterungen
Wenn Sie Leerzeichen in Zeichenfolgenvergleichen ignorieren , können Sie Leerzeichen entfernen, bevor Sie Zeichenfolgen vergleichen. Zum Beispiel werden die Eingaben
Ah, a manual
undAh , a manual
als gleich behandelt. Andere Zeichensetzung, ' .
muss erhalten bleiben. In ähnlicher Weise ist für die AusgabeAh, a manual
gleichAh, amanual
.Ersatzredundantes Leerzeichen bezieht sich auf die in der ursprünglichen Beschriftung vorhandenen Leerzeichen. Sie müssen sie nicht durch "-" ersetzen, aber wenn Sie Netze ersetzen, erhalten Sie mehr Punkte.
"Ah,<5 SPACES HERE>a manual."
erbracht werden?Antworten:
> <> 94 Bytes
Probieren Sie es online!
Groß- und Kleinschreibung beachten, Leerzeichen oder Interpunktion nicht ignorieren und eine leere Zeichenfolge ausgeben, wenn die Eingabe ungültig ist. Wenn Sie andere Zeichenfolgen ausprobieren möchten, können Sie einfach die erste Zeile nach der ändern
"v
, sofern sie kein"
oder kein Null-Byte enthält.quelle
Retina 0.8.2 , 117 Bytes
Probieren Sie es online! Kann 1 Byte einsparen, wenn Groß- und Kleinschreibung beachtet wird. Konnte 3 Bytes einsparen, indem
--, - --- ---'-- - --- -- ------- -- ----.
bei leerer Eingabe zurückgekehrt wurde. Erläuterung:Stellen Sie den gewünschten Text vor die Eingabe.
Bewegen Sie so viele Zeichen wie möglich vom gewünschten Text zum Ergebnis. Wenn das Zeichen ein Buchstabe ist, muss es auch mit dem nächsten Buchstaben in der Eingabe übereinstimmen, der dann gelöscht wird.
Wenn die Eingabe keinen übereinstimmenden Buchstaben enthält, ändern Sie ihn in a
-
und versuchen Sie es erneut.Wenn die Eingabe noch Buchstaben enthält, löschen Sie alles, andernfalls den Rest der Eingabe.
quelle
Jelly ,
58554845 BytesProbieren Sie es online!
Mehr lesbare Version:
Aufschlüsselung der String-Komprimierung:
quelle
Python 2 ,
126114 BytesProbieren Sie es online!
Python 2 ,
108106 BytesDie Eingabe ist eine Liste von Zeichen.
Probieren Sie es online!
quelle
(i=='')
nicht sein(i<' ')
(unter Verwendung eines Tabulators das niedrigste druckbare Zeichen)?JavaScript (Node.js) ,
122120 BytesProbieren Sie es online!
Erklärung:
Kann weiter reduziert werden, ersetzt jedoch auch Leerzeichen durch '-'. Wenn dies akzeptabel ist, dann
JavaScript (Node.js) , 112 Byte
Probieren Sie es online!
Noch weiter reduziert, ersetzt nur Leerzeichen, die nach dem angegebenen String stehen, durch '-'.
JavaScript (Node.js) , 105 Byte
Probieren Sie es online!
quelle
What did you just say about me, you little
What did you just say about me, you little
Testfall. Ihr Programm erzeugt--- - --- ------ - --- -- ------- -- w----
eine Ausgabe, die nicht den Anforderungen der Herausforderungsspezifikation entspricht.JavaScript (Node.js) , 135 Byte
Probieren Sie es online!
Wenn "darf" bedeutet, dass entweder tun oder nicht tun in Ordnung ist, dann
JavaScript (Node.js) , 106 Byte
Probieren Sie es online!
quelle
Brain-Flak ,
764600 BytesProbieren Sie es online!
Große Verbesserungen dank Jo King , insbesondere in der Saitenkonstruktion, aber auch ein paar logische Verbesserungen im Hauptkörper. Erklärung von ihm
Es ist Groß- und Kleinschreibung (so „Ah, ich sehe , du bist Orwell.“ Entspricht nicht aber „Ah, ich sehe , du bist orwell.“ Der Fall ist), Leerzeichen in der Eingabe wird nicht ignoriert, und unerreichte Leerzeichen in Original - String ist umgewandelt in
-
. Nach meinem Verständnis sind dies alles gültige Optionen.Erläuterung:
quelle
Haskell ,
182174172171170169 BytesProbieren Sie es online!
Ungolfed:
quelle
Prolog (SWI) , 109 Bytes
Probieren Sie es online!
Groß- und Kleinschreibung und Leerzeichen. Das
-/2
Prädikat ist das Hauptprädikat, wobei das erste Argument die Eingabezeichenfolge und das zweite Argument die Ausgabezeichenfolge ist.quelle
JavaScript (Node.js), 103 Byte
Probieren Sie es online!
Groß- und Kleinschreibung beachten.
quelle
Pyth , 78 Bytes SBCS
Testsuite
Nicht druckbare Zeichen im Code, siehe Link für die korrekte Version.
Groß- und Kleinschreibung beachten, Leerzeichen nicht ignorieren.
quelle
Perl 5
-F
, 192 BytesProbieren Sie es online!
quelle