Oto zdjęcie:
%%%%%%%%%%%%%
% Hello, %
% world! %
%%%%%%%%%%%%%
Ale jest to zbyt mylące, aby nasze niewymiarowe mózgi mogły go obliczyć. Więc oceniamy to tak:
Podziel go na 2 x 2 sekcje. Jeśli obraz kończy się przed ukończeniem sekcji, wyobraź sobie, że są tam spacje.
Uśrednij wartości znaków ASCII w każdej sekcji.
Zaokrąglij tę średnią i przekonwertuj ją na znak ASCII.
- Na koniec zamień wszystkie znaki w sekcji na średnie znaki.
Powtórz to dla wszystkich sekcji.
Średnia powyższego obrazu wygląda następująco:
$$>>II99######
$$>>II99######
$$##88KKGG####
$$##88KKGG####
Twoje zadanie: Napisz program, który pobiera obraz ASCII jako dane wejściowe i wyświetla jego średnią.
Uwaga Liczby całkowite są zaokrąglane według funkcji floor(x+0.5)
lub podobnej funkcji - innymi słowy, zaokrąglają połówki w górę.
Odpowiedzi:
JavaScript (ES6), 159 bajtów
Pobiera wejściowy ciąg multilinii.
źródło
MATL ,
3230 bajtówDane wejściowe to tablica znaków 2D z wierszami oddzielonymi
;
.Wypróbuj online!
Wyjaśnienie
źródło
Pyth, 58 bajtów
Wypróbuj online!
źródło
Lua,
382376367353348 bajtówDziała w wierszu poleceń; akceptuje ciąg znaków jak przypadek testowy.
źródło
Rubinowy,
235230 bajtówźródło
Python, 319 bajtów
Drugie wcięcie to tabulatory.
Rzeczy przed
C
wypełnianiem,C
to proces uśredniania pojedynczych liter, a reszta jest wyprowadzanaźródło
R,
433399 bajtówRobię się zrozpaczony, ponieważ to coś wydaje się niekonkurować jak cholera. Drukuje
dla przypadku testowego.
Jeśli dodasz 7 × 3
wyjście będzie
z powodu podzielności przez 2 itd. itd.
Nie golfowany:
Zobacz, jak radzi sobie z tym wspaniałym przykładem (dzięki uprzejmości chris.com):
Po:
źródło
Rubinowy,
180158148128 + 4124 + 4 = 128 bajtówUruchom z
$ ruby -nl
(+4 bajty dla-nl
flag). Pobiera dane wejściowe na STDIN.Zobacz na ideone: http://ideone.com/brmP3L
Nie golf i wyjaśnienia
Za
man ruby
The-n
flaga „[c] auses Ruby przyjąć następującą pętlę wokół skrypcie ...while gets ... end
”. Zmienna specjalna$_
zawiera ostatni wiersz odczytany przezgets
.-l
Flag usuwa\n
z każdej linii, co odpowiada$_.chop!
.Zmienna specjalna
$.
to liczba linii, które zostały odczytane do tej pory i$<
jest to STDIN. Pary znaków z co drugiej linii są spakowane z poprzedniej linii. Łańcuch formatu%2s%2s
łączy znaki i uzupełnia je spacjami, a następnie znaki są uśredniane.źródło
w=s=~/$/
jest krótszy do obliczenia szerokości początkowej. Zwróć również obliczony ciąg zamiast drukowania, ponieważ liczy się on jako wynik