Hier ist ein Bild:
%%%%%%%%%%%%%
% Hello, %
% world! %
%%%%%%%%%%%%%
Aber es ist zu verwirrend für unser untergroßes Gehirn zu berechnen. Also mitteln wir es so:
Teilen Sie es in 2 x 2 Abschnitte. Wenn das Bild endet, bevor ein Abschnitt vollständig ist, stellen Sie sich vor, dass dort Leerzeichen vorhanden sind.
Mitteln Sie die Werte der ASCII-Zeichen in jedem Abschnitt.
Runden Sie diesen Durchschnitt und konvertieren Sie ihn in ein ASCII-Zeichen.
- Ersetzen Sie abschließend alle Zeichen im Abschnitt durch das durchschnittliche Zeichen.
Wiederholen Sie dies für alle Abschnitte.
Der Durchschnitt des obigen Bildes sieht also so aus:
$$>>II99######
$$>>II99######
$$##88KKGG####
$$##88KKGG####
Ihre Aufgabe: Schreiben Sie ein Programm, das ein ASCII-Bild als Eingabe verwendet und dessen Durchschnitt ausgibt.
Hinweis Ganzzahlen werden durch Funktion floor(x+0.5)
oder eine ähnliche Funktion gerundet - mit anderen Worten, runde Hälften nach oben.
Antworten:
JavaScript (ES6), 159 Byte
Nimmt eine mehrzeilige Zeichenfolge als Eingabe.
quelle
MATL ,
3230 BytesDie Eingabe ist ein 2D-Zeichen-Array mit durch getrennten Zeilen
;
.Probieren Sie es online!
Erläuterung
quelle
Pyth, 58 Bytes
Probieren Sie es online!
quelle
Lua,
382376367353348 BytesFunktioniert auf der Kommandozeile; akzeptiert einen String wie im Testfall.
quelle
Ruby,
235230 Bytesquelle
Python, 319 Bytes
2. Einzug ist Tabulatoren.
Sachen bevor
C
aufgefüllt wird,C
wird der Mittelungsprozess zu einzelnen Buchstaben und Rest ausgegebenquelle
R,
433399 BytesIch werde verzweifelt, weil dieses Ding so verdammt konkurrenzlos zu sein scheint. Es druckt
für den Testfall.
Wenn Sie die 7 × 3 füttern
die Ausgabe wird sein
wegen der Teilbarkeit durch 2 usw. usw.
Ungolfed:
Schauen Sie sich an, wie es mit diesem wunderschönen Beispiel umgeht (mit freundlicher Genehmigung von chris.com):
Nach:
quelle
Ruby,
180158148128 + 4124 + 4 = 128 BytesLaufen Sie mit
$ ruby -nl
(+4 Bytes für-nl
Flags). Übernimmt die Eingabe für STDIN.Sehen Sie es auf ideone: http://ideone.com/brmP3L
Ungolfed & Erklärung
Per
man ruby
, das-n
Flag "[c] auses Ruby übernimmt die folgende Schleife um Ihr Skript ...while gets ... end
". Die Sondervariable$_
enthält die zuletzt gelesene Zeilegets
. Das-l
Flag entfernt das\n
aus jeder Zeile, entsprechend$_.chop!
.Die Sondervariable
$.
ist die Anzahl der bisher gelesenen Zeilen und$<
lautet STDIN. Die Zeichenpaare aus jeder zweiten Zeile werden mit den vorherigen Zeilen komprimiert. Die Formatzeichenfolge%2s%2s
kombiniert die Zeichen und füllt sie mit Leerzeichen auf. Anschließend werden die Zeichen gemittelt.quelle
w=s=~/$/
ist zur Berechnung der Anfangsbreite kürzer. Auch gibt die berechneten Zeichenfolge anstelle von Druck , weil das zählt als Ausgabe