To jest mój przyjaciel Thomas. Jest w połowie drzewem, w połowie emotikonem.
| |
| :D |
| |
On jest samotny. Zróbmy mu przyjaciół!
Biorąc pod uwagę emotikon tekstowej jako wejście (na przykład ಠ_ಠ
, :P
, >_>
, a nie 😀
, 🤓
lub 🐦
) na wyjściu odpowiadający treemote.
Długość treemote to liczba znaków, jaką ma on (zasadniczo większość wbudowanych funkcji długości dla łańcuchów). Więc ಠ_ಠ
ma długość 3.
Składnia treemote długości n
jest następująca:
|< 2+n spaces>| * ceil(n/2)
| <emote> | (note the spaces)
|< 2+n spaces>| * ceil(n/2)
Tak więc każdy treemote o długości 3 wyglądałby tak:
| |
| |
| ಠ_ಠ |
| |
| |
Ma ceil(n/2)
oddzielne segmenty tułowia po obu stronach, każdy ze 2 + n
spacjami w środku.
Wyzwanie: Biorąc pod uwagę emotikon tekstowy, wypisz odpowiedni treemot.
Inne zasady:
- To jest code-golf , co oznacza, że chcę, żebyś napisał krótki kod.
- Standardowe luki zabronione.
- Musisz obsługiwać znaki inne niż ascii, chyba że Twój język ich nie obsługuje.
Przypadki testowe:
^_^
| |
| |
| ^_^ |
| |
| |
\o/
| |
| |
| \o/ |
| |
| |
(✿◠‿◠)
| |
| |
| |
| (✿◠‿◠) |
| |
| |
| |
D:
| |
| D: |
| |
( ͡° ͜ʖ ͡°)
| |
| |
| |
| |
| |
| |
| ( ͡° ͜ʖ ͡°) |
| |
| |
| |
| |
| |
| |
ಠ_ಠ
przypadek testowy.Odpowiedzi:
05AB1E ,
2725 bajtówKod:
Wyjaśnienie:
Wykorzystuje kodowanie CP-1252 . Wypróbuj online! .
źródło
( ͡° ͜ʖ ͡°)
zwraca śmieszne wyniki.( ͡° ͜ʖ ͡°)
sam ma 11 znaków, ale wygląda na 8 znaków.Python 3.5,
767573 bajtów:( Dzięki Blue za wskazówkę, która zaoszczędziła 2 bajty! )
Wypróbuj online! (Ideone)
Tutaj jest także niekonkurencyjna wersja Python 2.7.5, ponieważ ma ona znacznie dłuższą pojemność 87 bajtów .
Wynika to z faktu, że domyślnym kodowaniem w Pythonie 2 są
ascii
znaki, takie jakಠ
poza zakresem 128 punktów Unicode, liczone jako więcej niż 1 bajt (list('ಠ')
wydajność['\xe0', '\xb2', '\xa0']
). Jedynym obejściem, jakie mogłem wymyślić, było najpierw zdekodowanie danych wejściowych za pomocąutf-8
, a następnie przejście z tymutf-8
zdekodowanym łańcuchem.Wypróbuj tę wersję Python 2 online! (Ideone)
źródło
/
w//
zrobić odgórnie podział.Dyalog APL ,
373433 bajtówUżytkownicy Chrome: patrz przypis *
Przypadki testowe
* Chrome źle wyświetla dwa znaki
≢⍵
(U + 2262, U + 2375) jako≢⍵
(U + 2261, U + 0338, U + 2375) zamiast jako̸≡⍵
(U + 0338, U + 2262, U + 2375), więc tutaj wersja wyświetlana dla Chrome:{↑'|'{⍺⍵⍺}¨b,(⊂⍵),b←' '/⍨⌈0.5×̸̸≡⍵}
źródło
{⍺⍵⍺}¨b
jest „programistą APL na swojej piątej filiżance kawy z kciukiem do góry”.V,
6057 bajtówNiestety, V ma prawie nic pod względem operacji matematycznych. Funkcje dzielenia i pułapu drastycznie zawyżają liczbę bajtów.
Ponieważ zawiera on wiele nieprzyjemnych druków, oto odwracalny zrzut heksowy:
Wyjaśnienie:
źródło
Vitsy, 43 bajty
Wyjaśnienie:
Wypróbuj online!
Zauważ, że z powodu błędu w TIO, wprowadzanie znaków Unicode nie będzie działać. Zamiast tego będziesz musiał użyć wersji lokalnej.Dzięki, @Dennis!źródło
Pyke, 31 bajtów
Wypróbuj tutaj!
Dzięki @ R.Kap za uratowanie bajtu dzięki sztuczce podziału podłogi
źródło
Rubinowy, 57 bajtów
Wykorzystuje sztuczki dzielenia liczb całkowitych i wykorzystuje dziwactwa w
puts
funkcji Ruby .źródło
JavaScript ES6,
8378 bajtówźródło
f=
, co oszczędza 2 bajty. Zaoszczędź kolejne 2 bajty, poruszając sięe
wewnątrz szablonu i naa
zewnątrz. Zapisz kolejne 2 bajty, wstawiając spacje zamiast dodając 2 do powtórzenia. Zaoszczędź kolejną wiązkę bajtów, używając funkcji przesuwania bitów, aby podzielić przez 2.> <> , 103 bajty
Wypróbuj online!
To rozwiązanie opiera się na obserwacji, z
| <x> |
której składa się każda linia , gdzie<x>
jest wzór w środkowej linii i ta sama liczba spacji w innych liniach.Po odczytaniu wartości wejściowej (długości
n
) ze STDIN, program wypychan*(n+(n%2))
spacje. Stos jest następnie rzucany o połowę tyle razy. Następnie wszystkien
postacie oprócz tych są przyciągane do nowego stosu, pozostawiając stosy składające się zen
spacji lub samego wzoru (tylko na środkowym stosie). W kroku wyjściowym zawartość bieżącego stosu jest drukowana, otoczona przez|
i|
.źródło
C, 89 bajtów
Nie jestem jednak pewien, czy poradzi sobie z emotikonami nie-ascii ....
źródło
strlen
zlicza bajty do pierwszego bajtu zero, w wyniku czego emotikony nie-ascii są uważane za znacznie szersze niż są.PowerShell v3 +, 72 bajty
Pobiera ciąg wejściowy
$a
. Konstruuje$b
jako (pusty ciąg zakończony rurą (ze$a.length
spacjami na środku) i znak nowej linii) powtarzany (długość + 1 przesunięty w prawo o jeden bit, tj. Podzielony przez dwa i sufit) razy. Następnie wyprowadza kopie$b
ciągu wejściowego z własnymi potokami i wreszcie kopie$b
ponownie.Wymaga v3 + dla
-shr
operatora zmiany bitów .Przykłady
źródło
Pyth, 30 bajtów
Dziwię się, że tak łatwe zadanie nie zostało zaimplementowane w Pyth.
Wypróbuj online!
źródło
TSQL,
9688 bajtówWypróbuj online!
źródło