Ihr Ziel ist es, mehrzeilige ASCII-ähnliche zu verwenden
| v |
* * * *
* * *
und ein Array haben, das alles enthält, was kein Stern ist, der in einen Stern geändert wurde (außer Leerzeichen mit beliebiger Breite), sowie die Anzahl der darin enthaltenen Sterne und die Anzahl der Sterne, die es jetzt enthält. Die Ausgabe meines Beispiels wäre also:
['* * *
* * * *
* * *',7,10]
oder
["* * *\n* * * *\n * * *", 7, 10]
abhängig davon, was Ihre Codesprache tut.
Dies ist eine Code-Golf- Herausforderung, also gewinnen die kürzesten Bytes!
Antworten:
GolfScript, 30 Zeichen
Nimmt die Eingabe von stdin. Beispiel ( online testen ):
quelle
Python -
5866 ZeichenSooo ... mein erster Code Golf Versuch ...
Code:
Ausgabe:
Variablen:
i
- Eingabezeichenfolgep
- Mustero
- Ausgabe - entferntAbhängigkeiten:
Python -
re
ModulVollständiger Code:
Bearbeitungen:
import re
Zur Lösung hinzugefügto=
Druck ersetztr'[/\S/g]'
wurde geändert inr'\S'
(danke @ 14mRh4X0r)quelle
re
Modul als Abhängigkeit aufgeführt, es ist jedoch weiterhin erforderlich, es in die Antwort und die Bewertung aufzunehmen. Ihr Programm gibt das Ergebnis auch nicht so aus, wie es soll (da Sie dieo
Variable jedoch für nichts verwenden, können Sies/o=/print/
nur drei verlieren). Davon abgesehen sieht das gut aus!i
Variable enthält| v | * * * * * * *
anstelle der eigentlichen Testeingabe (einschließlich Zeilenumbrüche). Davon abgesehen funktioniert Ihr Programm immer noch, wenn Sie die Zeilenumbrüche einfügen, sodass Ihr Programm überhaupt nicht geändert werden muss, sondern nur der Beitrag. :)r'[/\S/g]'
dies durch ersetzt werden könnter'\S'
, um ein paar Zeichen zu speichern.Ruby 2.0, 53 Zeichen
Ich bin mir nicht sicher, welche genauen Eingabe- / Ausgabeformate erforderlich sind. Dies nimmt Eingaben in STDIN entgegen und formatiert die Ausgabe wie folgt:
Eingang:
Ausgabe:
quelle
JavaScript (ECMASCript 6) - 51 Zeichen
Angenommen, die Variable
A
enthält den mehrzeiligen ASCII-Eingang. Um es dem Benutzer abzunehmen, ersetzen Sie esA
durchprompt()
(+7 Zeichen) oder als Funktion (erneut +7 Zeichen):Die Ausgabe erfolgt an die Konsole.
Prüfung:
Ausgänge:
quelle
PHP ≥ 5,5,
846963 BytesDazu gibt es nicht viel zu sagen. Da es keine Spezifikation für den Umgang mit Eingabe / Ausgabe gibt, gehe ich von variablem Speicher aus. Erwartet die Eingabe in Variable
$s
und speichert das Array in Variable$a
. Schade, dass diese Funktionsnamen so lang sind.quelle
Rebol, 84
Stellen Sie
t
den Text so ein ....und das würde zurückkehren ...
Ungolfed Version mit einigen Anmerkungen:
quelle
Groovy:
9692 ZeichenVerwendet Groovy 2.2.1
Liest von STDIN. IMHO, nicht besonders klug, aber ziemlich leicht zu lesen (aufgrund seiner Kürze)
quelle
In JavaScript / CoffeeScript - 66 Zeichen
Wie im PHP-Beispiel ist die Länge auf die Länge der Funktionsnamen zurückzuführen
Beispiel für die Verwendung (CoffeeScript):
quelle
[x.replace(r=/\S/g,s='*'),x.split(s).length-1,x.match(r).length]
C # - 116
Der kürzeste Weg, den ich mir vorstellen kann, gibt ein Array zurück.
quelle
Perl, 52 Bytes
Übernimmt Eingaben von der Standardeingabe und druckt auf die Standardausgabe.
Angenommen, das Ausgabeformat, wie Sie es in Ihrer Frage beschrieben haben, könnte erheblich verkürzt werden, wenn ein anderes Ausgabeformat zulässig wäre.
quelle
Javascript - 50 Zeichen
Prüfung
Eingang
Ausgabe
quelle
AWK, (zu lang)
Ich bin kein
awk
Meister, also bin ich sicher, dass es verbessert werden kann. Zum Mitnehmen hatte ich Spaß beim Schreiben! Der Kampf kam mit der Frage, wie mannewlines
die Eingaben bewahrt, aber nicht, 7,10]
auf eine neue Linie bringt. Dieses bisschen Logik (NR>1{z=z "\n" $0} NR==1{z=z $0}
) hat mich viele Charaktere gekostet. Es würde mich interessieren, andereawk
Ansätze an dieser Front zu sehen.Ich habe die Datei am Ende des Skripts nicht angegeben, aber offensichtlich wäre die Verwendung
awk '{<code>}' ascii.txt
, woascii.txt
die mehrzeilige "Eingabe" enthalten ist.Ausgabe
quelle
Java, 199 Bytes
Golf:
Nicht Golf:
Online ausführen .
quelle