Das ist mein Freund Thomas. Er ist halb Baum, halb Emoticon.
| |
| :D |
| |
Er ist einsam. Machen wir ihm ein paar Freunde!
Bei einer textbasierten emoticon als Eingabe ( zum Beispiel ಠ_ಠ
, :P
, >_>
, nicht 😀
, 🤓
oder 🐦
), die entsprechenden Ausgang treemote.
Die Länge einer Treemote gibt an, wie viele Zeichen sie enthält (im Grunde genommen sind die meisten Längenfunktionen für Zeichenfolgen integriert). Also ಠ_ಠ
hat Länge 3.
Die Syntax für einen Baum mit der Länge n
lautet wie folgt:
|< 2+n spaces>| * ceil(n/2)
| <emote> | (note the spaces)
|< 2+n spaces>| * ceil(n/2)
Jeder Baum mit der Länge 3 würde also so aussehen:
| |
| |
| ಠ_ಠ |
| |
| |
Er hat ceil(n/2)
auf beiden Seiten durch Zeilenumbrüche getrennte Kofferraumsegmente, die jeweils 2 + n
Leerzeichen enthalten.
Herausforderung: Geben Sie mit dem textbasierten Emoticon die entsprechende Treemote aus.
Andere Regeln:
- Dies ist Code-Golf , was bedeutet, dass Sie kurzen Code schreiben sollen.
- Standardlücken sind nicht erlaubt.
- Sie müssen Nicht-ASCII-Zeichen unterstützen, es sei denn, Ihre Sprache kann sie nicht verarbeiten.
Testfälle:
^_^
| |
| |
| ^_^ |
| |
| |
\o/
| |
| |
| \o/ |
| |
| |
(✿◠‿◠)
| |
| |
| |
| (✿◠‿◠) |
| |
| |
| |
D:
| |
| D: |
| |
( ͡° ͜ʖ ͡°)
| |
| |
| |
| |
| |
| |
| ( ͡° ͜ʖ ͡°) |
| |
| |
| |
| |
| |
| |
ಠ_ಠ
Testfall.Antworten:
05AB1E ,
2725 BytesCode:
Erläuterung:
Verwendet die CP-1252- Codierung. Probieren Sie es online! .
quelle
( ͡° ͜ʖ ͡°)
liefert lustige Ergebnisse.( ͡° ͜ʖ ͡°)
selbst 11 Zeichen lang ist, aber 8 Zeichen lang aussieht .Python 3.5,
767573 Bytes:( Danke an Blue für einen Tipp, der 2 Bytes gespart hat! )
Probieren Sie es online! (Ideone)
Hier ist auch eine nicht konkurrierende Python 2.7.5- Version, da sie mit 87 Bytes viel länger ist .
Dies liegt daran, dass die Standardcodierung von Python 2 aus
ascii
Zeichen besteht, die beispielsweiseಠ
außerhalb des 128-Unicode- Punktbereichs liegen , und daher mehr als 1 Bytelist('ಠ')
ergeben['\xe0', '\xb2', '\xa0']
. Die einzige Umgehung, die ich mir vorstellen konnte, war, die Eingabe zuerst mit zu dekodierenutf-8
und dann mit dieserutf-8
dekodierten Zeichenfolge fortzufahren.Probieren Sie diese Python 2-Version online aus! (Ideone)
quelle
/
in//
der tun ceil Division.Dyalog APL ,
373433 BytesChrome-Nutzer: Siehe Fußnote *
Testfälle
* Chrome zeigt die beiden Zeichen
≢⍵
(U + 2262, U + 2375)≢⍵
falsch als (U + 2261, U + 0338, U + 2375) anstatt als̸≡⍵
(U + 0338, U + 2262, U + 2375) an Anzeigeversion für Chrome:{↑'|'{⍺⍵⍺}¨b,(⊂⍵),b←' '/⍨⌈0.5×̸̸≡⍵}
quelle
{⍺⍵⍺}¨b
ist der "APL-Programmierer bei seiner fünften Tasse Kaffee, der einen Daumen hoch gibt" Emoticon.V
6057 BytesLeider hat V in Bezug auf mathematische Operationen so gut wie nichts. Die Divide- und Ceil-Funktionen haben die Byteanzahl drastisch erhöht .
Da dies eine Menge böser Unprintables enthält, ist hier ein umkehrbarer Hexdump:
Erläuterung:
quelle
Vitsy, 43 Bytes
Erläuterung:
Probieren Sie es online!
Beachten Sie, dass die Eingabe mit Unicode-Zeichen aufgrund eines Fehlers in TIO nicht funktioniert. Sie müssen stattdessen die lokale Version für diese verwenden.Danke, @Dennis!quelle
Pyke, 31 Bytes
Probieren Sie es hier aus!
Vielen Dank an @ R.Kap für das Speichern eines Bytes mit dem Floor Divide-Trick
quelle
Ruby, 57 Bytes
Verwendet Tricks der Ganzzahldivision und nutzt die Macken in Rubys
puts
Funktion.quelle
JavaScript ES6,
8378 Bytesquelle
f=
, das spart dir 2 Bytes. Speichern Sie weitere 2 Byte, indem Siee
innerhalb unda
außerhalb der Vorlage verschieben . Speichern Sie weitere 2 Byte, indem Sie Leerzeichen einfügen, anstatt der Wiederholung 2 hinzuzufügen. Speichern Sie eine weitere Menge von Bytes, indem Sie die Bitverschiebung zum Teilen durch 2 verwenden.> <> 103 Bytes
Probieren Sie es online!
Diese Lösung wird auf der Beobachtung basiert , das jede Zeile besteht
| <x> |
, wobei<x>
das Muster in der Mittellinie ist, und die gleiche Anzahl von Leerstellen in den anderen Leitungen.Nach dem Lesen der Eingabe (Länge
n
) von STDIN werdenn*(n+(n%2))
Leerzeichen eingefügt . Der Stapel wird dann halb so oft gerollt. Als nächstes werden alle außer denn
Zeichen auf einen neuen Stapel gezogen, wobei ein Stapel von Stapeln verbleibt, der entweder ausn
Leerzeichen oder dem Muster selbst besteht (nur im mittleren Stapel). Im Ausgabeschritt wird der Inhalt des aktuellen Stapels gedruckt, umgeben von|
und|
.quelle
C 89 Bytes
Ich bin mir nicht sicher, ob es mit nicht-ASCII-Emoticons umgehen kann.
quelle
strlen
zählt die Bytes bis zum ersten Null-Byte und als Ergebnis werden Nicht-ASCII-Emoticons als viel breiter angesehen als sie sind.PowerShell v3 +, 72 Byte
Übernimmt die Eingabezeichenfolge
$a
. Konstruiert$b
als (die leere Pipe-Ended-Zeichenfolge (mit$a.length
Leerzeichen in der Mitte) und eine nachfolgende Newline), die sich (Länge + 1 um ein Bit nach rechts verschoben, dh durch zwei und ceiling'd geteilt) mal wiederholt. Anschließend werden die Kopien von$b
, die Eingabezeichenfolge mit eigenen Pipes und schließlich die Kopien von$b
erneut ausgegeben.Benötigt v3 + für die Bitverschiebung
-shr
- Operator .Beispiele
quelle
Pyth, 30 Bytes
Ich bin überrascht, dass eine so einfache Aufgabe in Pyth nicht implementiert ist.
Probieren Sie es online!
quelle
TSQL,
9688 BytesOnline versuchen!
quelle