Ein isoliertes Zeichen ist ein Zeichen (außer einem Zeilenumbruch), das kein benachbartes Zeichen desselben Typs enthält. Benachbarte Zeichen können links, rechts oben oder unten sein, aber keine Diagonalen. Zum Beispiel wird im folgenden Text H
isoliert:
Ybb
YH%
%%%%
Alle anderen Zeichen sind nicht isoliert, da an jedes mindestens ein anderes Zeichen desselben Typs angrenzt.
Ihre Aufgabe ist es, ein Programm zu schreiben, das eine Zeichenfolge als Eingabe verwendet und die Anzahl der isolierten Zeichen bestimmt.
Wertung
Ihre Antwort wird anhand von zwei Metriken bewertet. Das erste ist die Anzahl der isolierten Zeichen in Ihrem Programm. Sie sollten versuchen, dies zu minimieren. Die zweite ist die Anzahl der Bytes in Ihrem Programm. Sie sollten dies ebenfalls minimieren. Die Programmgröße fungiert als Verbindungsunterbrecher für das erste Kriterium.
Zusätzliche Regeln
Sie sollten die Eingabe in den druckbaren ASCII-Bereich sowie alle Zeichen unterstützen, die Sie in Ihrem Programm verwenden.
Sie können einen Zeilenumbruch entweder als Zeilenumbruchzeichen oder als Zeilenumbruch gefolgt von einem Zeilenvorschub betrachten.
Sie können Eingaben in jedem vernünftigen Format vornehmen. Dies beinhaltet eine Liste von Zeilen.
Testfälle
Ybb
YH%
%%%%
Aaaab
uuu
yyybbb
A
qqWWaaww
quelle
Y
darunter hat.restricted-source
stattdessen zu einer Herausforderung zu machen und isolierte Charaktere insgesamt zu verbieten.Antworten:
Python 2 , 0 (
350344314309301298291 Byte)Probieren Sie es online aus!
-7 Bytes, danke an Jo King
quelle
Sauber , 0 (
439... 415 Bytes)-11 danke an Ørjan Johansen
Endlich eine Herausforderung, bei der ich mit Clean 0 erzielen kann!
(und normalerweise ist es schlecht bei Herausforderungen im Quelllayout!)
Probieren Sie es online aus!
Der TIO-Link wird
module main
aufgrund der Implementierung von Clean in TIO verwendet,module d
funktioniert jedoch, wenn Sie die Dateid.icl
anstelle vonmain.icl
TIO benennen .Eine der alten Zeilen erklärt (neue Version ist dasselbe in einer anderen Reihenfolge):
quelle
let
spart 11 Bytes.d
praktischJavaScript (ES6), 0 (154 Byte)
Gespeichert
24 Bytes dank @ ØrjanJohansenNimmt die Eingabe als Array von Zeichenfolgen auf.
Probieren Sie es online aus!
quelle
Gelee , 0 (
41 2725 Bytes)Probieren Sie es online aus!
Nimmt die Eingabe als Liste der Zeilen entgegen. Die erste Zeile im Code macht nie etwas und dient nur dazu, isolierte Zeichen zu minimieren.
quelle
MATL , 0 (54 Bytes)
Die Eingabe ist ein Zellenarray von Zeichenfolgen, eine für jede Zeile :
{'line 1', 'line 2', 'and line 3'}
.Probieren Sie es online aus! Oder überprüfen Sie Testfälle und Quellcode .
quelle
Python 3 , 0 (323 Bytes)
Probieren Sie es online aus!
quelle
05AB1E , 0 (101 Bytes )
Probieren Sie es online aus.
Dies ist eines der hässlichsten und längsten 05AB1E-Programme, die ich je geschrieben habe.>.> Diese Herausforderung ist in 05AB1E täuschend schwer. Ich habe keinen Zweifel daran, dass die Anzahl der Bytes durch Verwendung eines anderen Ansatzes (oder sogar mit einem ähnlichen Ansatz) mindestens halbiert oder sogar drei- bis viermal so klein werden kann, aber ich sehe derzeit nicht, wie. Ich bin nur froh, dass es gerade funktioniert. Wenn jemand anderes eine viel kürzere 05AB1E-Antwort mit einigen cleveren Tricks veröffentlicht, werde ich diese Antwort wahrscheinlich aus Scham löschen ... xD
Erläuterung:
quelle
Ruby , Punktzahl 0,
237209 BytesProbieren Sie es online aus!
quelle
JavaScript (Node.js) , 0 (279 Byte)
Probieren Sie es online aus!
Empfangen Sie Eingaben als Array von Zeilen.
quelle