Buatkan saya telur Paskah!

29

Tidak, bukan ^^vv<><>BAjenis telur Paskah, telur Paskah asli yang kita lukis.

Ini telur (yang sudah ditarik).

  __
 /  \
/    \
|    |
\____/

Di paskah, kita melukisnya dengan pola. Seperti ini:

  __
 /--\
/----\
|----|
\____/
  __
 /%%\
/%%%%\
|%%%%|
\____/
  __
 /~~\
/~~~~\
|~~~~|
\____/

Tantangan

Diberi karakter (cetak ascii) untuk mengecat telur, cetak telur yang dicat.

Contoh:

&:
  __
 /&&\
/&&&&\
|&&&&|
\____/

#:
  __
 /##\
/####\
|####|
\____/

Spesifikasi

  • Trailing newlines / spasi diizinkan.
Matthew Roh
sumber
8
Mengapa downvote? Jika Anda tidak menyukai pertanyaan ini, harap turunkan alasannya.
Matthew Roh
2
Salah satu alasan potensial mungkin karena mereka tidak menganggap tugas ini cukup jelas atau cukup jelas. Saya akan mengatakan itu cukup jelas, dan itu juga tidak sepele. Karena itu, saya juga tidak terlalu bersemangat.
John Dvorak
17
Tantangannya akan sangat sepele di sebagian besar bahasa. Telur terlalu pendek untuk memungkinkan banyak orisinalitas dalam bermain golf. Menurut pendapat saya, ini adalah tantangan yang tidak menarik (yang belum di-sandbox, karena Anda sepertinya memboikot sandbox karena saya tidak tahu alasan apa), oleh karena itu, saya menurunkannya.
Dada
25
Terpilih karena tantangan sederhana seperti ini bagus untuk pemula seperti saya untuk bermain golf.
Shaggy
7
POOF! Anda adalah telur paskah. (Maaf, tidak bisa menahan)
George Cummins

Jawaban:

16

Brain-Flak , 270 268 266 + 1 = 267 byte

+1 dari -cbendera

(((((((((({}<(((([(()()())]((((((((((({}){}){}){}){}[()]))<>)<>{}())))))<>)<>(((()()()()()){}))({}()){})<>)<>>))))<<>({}<>)((()()()()()){})<>({}<>)>))))<<>((({})<>)({})<((()()()()()){})>[()()])>))<>((((({})<>)[(()()()()())({}){}])<((()()()()()){})<>((({}<>){}()))>))

Cobalah online!

Saya akan menulis penjelasan, tetapi saya tidur siang dulu dan lupa bagaimana keseluruhan pemikiran ini bekerja. Dugaanmu sebaik milikku.

Wisaya Gandum
sumber
14
Ini adalah penjelasan terbaik yang pernah saya baca di sini. +1
David Conrad
12

Python 2, 62 byte

Super lurus ke depan. Cobalah online .
-1 byte, terima kasih kepada @ mbomb007

print r'''  __
 /~\
/~~\
|~~|
\____/'''.replace('~',input()*2)
Possum Mati
sumber
1
62 bytes
mbomb007
@ mbomb007 Bagus, terima kasih
Dead Possum
2
Anda dapat menyimpan dua byte dengan menggunakan fungsi lambda seperti ini
Keerthana Prabhakaran
@KeerthanaPrabhakaran Saya tidak yakin apakah lambdas baik untuk tantangan ascii
Dead Possum
1
apa masalah dalam menggunakan lambda dalam tantangan ascii? bagaimana mereka berhubungan? : o
Keerthana Prabhakaran
10

Arang , 30 26 16 byte

Dua byte disimpan berkat @Neil dengan mengisi setelah membuat bentuk

__↗¹←↑¹↖²↓_‖M←¤S

Cobalah online!

Penjelasan

Program ini bekerja dengan terlebih dahulu membuat setengah bagian kanan telur, dan kemudian memantulkannya untuk menghasilkan setengah bagian kiri.

__↗¹                          Write the two bottom _s and write the /
←↑¹                           Move left and write the |
↖²                            Then write two \s
↓_                            And the top _
‖M←                          Reflect the canvas to the left
¤S                           Fill the shape with the string input
Kritixi Lithos
sumber
←_↘bisa sama ↓_tetapi sebenarnya Anda dapat mengisi setelah Anda mencerminkan selama 16 byte: __↗¹←↑¹↖²↓_‖M←¤S.
Neil
@Neil Terima kasih telah memperkenalkan saya ke¤
Kritixi Lithos
9

Jelly , 24  22 byte

Ḥ;“ ¶/\|_”“Ṁ¢ṚR;ḳ}AṠ’ṃ

Cobalah online!

Bagaimana?

Ḥ;“ ¶/\|_”“Ṁ¢ṚR;ḳ}AṠ’ṃ - Main link: character c  e.g. '~'
Ḥ                      - double c: ['~','~']
  “ _¶/\|”             - string literal: [' ','_',<newline>,'/','\','|']
 ;                     - concatenate c:  [['~','~'],' ','_',<newline>,'/','\','|']
          “Ṁ¢ṚR;ḳ}AṠ’  - base 250 number: 3067183430901851641706
                     ṃ - base decompression with reversed @rguments:
                       -     take the number and convert it to a base length(the list)
                       -     then index (1-based) into that same list.
                       -     i.e.: 3067183430901851641706 in base 7
                                 = 22003241534115361163500004
                                   indexed into [['~','~'],' ','_',<newline>,'/','\','|']
                                 = [' ',' ','_','_',<newline>,' ','/',['~','~'],'\',<newline>,'/',['~','~'],['~','~'],'\',<newline>,'|',['~','~'],['~','~'],'|',<newline>,'\','_','_','_','_','/']
                       - implicit print:  __
                                         /~~\
                                        /~~~~\
                                        |~~~~|
                                        \____/
Jonathan Allan
sumber
3
Saya menominasikan penjelasan Anda untuk penjelasan terpanjang satu byte.
Guci Gurita Ajaib
Tampaknya telah menjadi atom yang sangat berguna, pikir saya akan memberikan waktu di pusat perhatian!
Jonathan Allan
2
Saya melihat Dennis banyak menggunakannya, ini adalah pertama kalinya saya merasa seperti saya benar-benar memahaminya; waktu tidak sia-sia! Anda telah memberi saya 1 unit pembelajaran.
Magic Octopus Mmn
1
Yah itu salah satu bayi saya :)
Jonathan Allan
6

Sed, 43 karakter

s:.:  __\n /&&\\\n/&&&&\\\n|&&&&|\n\\____/:

Contoh dijalankan:

bash-4.3$ sed 's:.:  __\n /&&\\\n/&&&&\\\n|&&&&|\n\\____/:' <<< '★'
  __
 /★★\
/★★★★\
|★★★★|
\____/
manatwork
sumber
Itulah yang saya tulis, hanya beberapa detik lebih cepat.
Riley
6

JavaScript (ES6), 53 49 47 byte

Saya yakin saya bisa memeras sedikit lebih banyak dari ini - harus melarikan diri \s mengganggu saya.

f=

c=>`  __
 /${c+=c}\\
/${c+=c}\\
|${c}|
\\____/`

console.log(f`-`)
console.log(f`%`)
console.log(f`~`)
console.log(f`&`)
console.log(f`#`)

  • 4 byte disimpan dengan memindahkan s=c+cpenetapan variabel di dalam set pertama {}.
  • 2 byte disimpan dengan menggunakan c+=calih-alih s=c+c& s=s+s, dengan sebagian berkat Neil yang melihat peningkatan ini pada saat yang sama ketika saya membuatnya.

Cat Sendiri!

Shaggy
sumber
Akan sedikit lebih baik jika Anda memasukkan input ke dalam <pre><code>s. Pekerjaan yang bagus.
Matius Roh
Terima kasih, @SIGSEGV. Konsol mempertahankan ruang putih dan, secara default, setidaknya, menggunakan font monospace, jadi tidak perlu menampilkan ke pre.
Shaggy
1
Kenapa tidak c+=c ?
Neil
Terima kasih, @Neil, saya hanya mengeditnya sendiri, tapi saya akan memperbarui lagi untuk memberi Anda anggukan juga.
Shaggy
@Arnauld Anda tidak perlu menghitung f=\nporsi untuk jumlah byte. Hanya saja snippet berjalan.
AdmBorkBork
5

Alice , 53 52 byte, tidak bersaing

Terima kasih kepada Leo karena secara tidak langsung menghemat 1 byte.

/o *^i}'.*[;.h~r}}~"{.[^\\
@"S .^~ y~a}~~.["{!~"}^^^

Cobalah online!

Sayangnya, saya harus memperbaiki bug dengan y(transliterasi) untuk membuat ini berfungsi, jadi saya menandainya sebagai non-bersaing.

Penjelasan

Ide dasarnya adalah membuat string dari telur tetapi dengan ~sebagai pengganti untuk dua salinan input. Namun, karakter lain dari input tidak terlalu ramah untuk string Alice, karena mereka tidak dapat mengandung linefeeds, dan semua /\_|perlu melarikan diri (karena mereka diperlakukan sebagai cermin dan dinding). Jadi saya bisa menyimpan beberapa byte dengan menggunakan placeholder untuk ini juga, dan kemudian transliterasi. Placeholder untuk /\_|yang .[^{, yang hanya karakter yang tepat sebelum yang mereka wakili. Untuk linefeed yang saya gunakan} .

Sekarang kode ... seluruh program dapat diselesaikan dalam mode Ordinal karena kita hanya membutuhkan pemrosesan string dan tidak ada pemrosesan bilangan bulat. Selain itu, kita tidak memerlukan aliran kontrol bersyarat. Seluruh program dapat diekspresikan secara linear. Struktur umum dari program ini adalah ini:

/...//
@....

Dalam program semacam itu, IP terpental ke atas dan ke bawah melalui ... bagian, pertama hanya mengeksekusi setengah dari karakter. Kemudian keduanya /pada akhirnya memindahkan IP tepat satu sel, sehingga dalam perjalanan kembali mengeksekusi setengah lainnya (sekali lagi memantul ke atas dan ke bawah) sampai akhirnya @mengakhiri program. Jadi jika kita membuka struktur zigzag lucu di tengah, program yang kita jalankan benar-benar terlihat seperti ini:

"  ^^} .~[}.~~[}{~~{}[^^^^.""!}"r.h~;a*y'~i.*So

Mari kita lalui ini:

"  ^^} .~[}.~~[}{~~{}[^^^^."
      This first string is simply the egg template I've talked about.
"!}"  Push this string. It covers all the characters we need to replace
      in the template except ~.
r     Range expansion. Turns '!}' into '!"#$...z{|}'.
.     Duplicate.
h~;   Split off the first character, swap it to the top and discard it.
a*    Append a linefeed.
      We've now basically rotated the string to the left, but appended
      a linefeed instead of the exclamation mark we've shifted off.
      This maps each character in the string to the next one, except }
      which gets mapped to a linefeed.
y     Transliterate. Since the strings have the same length, this just maps
      each character in the first string to the corresponding character in
      the second string, replacing all of our placeholder characters.
'~    Push "~".
i.*   Read the input and duplicate it.
S     Substitute all "~" with the doubled input.
o     Output the result.
Martin Ender
sumber
: D ada di sini !! Bahasa ini terlihat bagus
Conor O'Brien
@ ConorO'Brien terima kasih. Saya sudah memplester beberapa tantangan lama dengan itu jika Anda ingin melihat lebih banyak sampel. :)
Martin Ender
4

PowerShell , 50 49 48 byte

'  __
 /11\
/1111\
|1111|
\____/'-replace1,$args

Cobalah online!

Penggantian string langsung menjadi string literal. Tidak banyak ruang untuk bermain golf.

-1 byte terima kasih kepada HyperNeutrino; -1 byte berkat wubs

AdmBorkBork
sumber
4

Wortel , 34 byte, tidak bersaing

  __
 /##\\
/####\\
|####|
\\____/

Non-bersaing karena saya baru saja memperbaiki bug dengan juru bahasa dalam memimpin spasi tidak ditampilkan.

Cobalah online sini .

Pertama, kita berada dalam mode caret, di mana setiap karakter didorong ke "tumpukan". Dan akhirnya "tumpukan" dicetak sebagai output.

Dalam caret-mode, #tekan input, sehingga instance #pada dasarnya diganti dengan input (FYI #adalah program cat satu byte).

Kritixi Lithos
sumber
4

SOGL V0.12 , 21 18 16 byte

0≈⁾‛≤¦¶W?5┼EB§  ‘

Coba Di Sini!

Seluruh program dikompresi berikut ini:

  __
 /ŗŗ\
/ŗŗŗŗ\
|ŗŗŗŗ|
\____/

di mana ŗakan diganti dengan input.

13 byte hampir berfungsi juga, tetapi melakukan hal-hal yang tidak dibutuhkan - dengan input tertentu ..

dzaima
sumber
Anda harus mengecat telur. (mis. isi bagian dalam telur dengan karakter)
Matthew Roh
@SIGSEGV - Dijelaskan bahwa itu dicapai dengan mengganti spasi dengan input dan mengganti tanda hubung dengan spasi dengan kode@,ŗ -@ŗ
Jonathan Allan
Apakah SOGOL akan tiba di TIO dalam waktu dekat?
Jonathan Allan
@ JonathanAllan Jika seseorang bisa mendapatkannya di sana, maka ya.
dzaima
Bicaralah dengan Dennis di ruang bicara-tryitonline-net .
Jonathan Allan
3

05AB1E , 34 33 32 byte

„__I244S×'/ì'\«`©¦¨'|.ø®R¹'_‡).c

Cobalah online!

Penjelasan

„__                               # push "__"
   I244S×                         # push a list of the input repeated 2 and 4 and 4 times
         '/ì                      # prepend "/"
            '\«                   # append "\"
               `                  # split list to separate items
                ©                 # store a copy of the last one in register
                 ¦¨               # remove first and last item of the string
                   '|.ø           # surround with pipes
                       ®R         # retrieve the string from register and reverse it
                         ¹'_‡     # replace input with "_"
                             ).c  # print each line centered
Emigna
sumber
•jÀňiXƒÐ[Z•6B6ôvy5ÝJ"_ |/\"¹«‡,untuk 32, sama sekali berbeda. Ini memalsukan saya dan membuat saya berpikir saya bisa menggunakan palindromize ... Sialan fakta itu ())(dan /\\/adalah palindrom.
Guci Gurita Ajaib
1
@carusocomputing: Anda harus mempostingnya secara terpisah. Cukup berbeda untuk menjadi menarik dengan sendirinya :)
Emigna
3

Python 3.6 , 53 byte

lambda x:fr'''  __
 /{2*x}\
/{4*x}\
|{4*x}|
\____/'''
  • Fungsi yang tidak disebutkan namanya mengambil karakter x dan mengembalikan string.
  • Menggunakan f-string Python 3.6 sebagai alternatif tambahan untuk versi sebelumnya .format()- the{} terlampir dari f-string adalah kode untuk dievaluasi.
  • String juga merupakan r-string dan triple dikutip menghemat satu byte lebih dari:

lambda x:f'  __\n /{2*x}\\\n/{4*x}\\\n|{4*x}|\n\____/'

Saya tidak bisa melihat juru bahasa online untuk Python 3.6.
Cobalah di repl.it (mengatakan 3.5 tetapi 3.6)

Jonathan Allan
sumber
3

Brainfuck - 257 byte 181 byte

Golfed: Versi langsung klik di sini

+++++++[>++++++<-]>[>+>++>++>++<<<<-]>+++++>>>>++++++++++[>+++>+<<<++++<+<+>>>-]>++<<<--<+>>>,>..<<<<..>>>>>.<.<<<<<.>>>>..<<.>>>>.<<<<<<.>>>>....<<.>>>>.<<<.>....<.>>>.<<<<.<....<.

Saya bukan pegolf profesional. Ini adalah upaya saya sejauh yang saya ingat: D

Keluaran:

  __ 
 /XX\ 
/XXXX\ 
|XXXX| 
\____/ where X is the given char.

Tidak digabungkan (+ komentar):

; chars:
; _ 95
; / 47
; \ 92
; | 142
; min val = 42 (7 times 6)

; lets do some math
+++++++[>++++++<-]> ; effectively 7 times 6

; now lets copy this to the next pointers multiplying by 2 
the subsequent ones after the 1st
[>+>++>++>++<<<<-]

>+++++
>>>

> ; empty space starting from this pointer
++++++++++[>+++>+<<<++++<+<+>>>-]
>++<
<<--<+
>>>,
>..<<<<..>>>>>.<.
<<<<<.
>>>>..<<.>>>>.
<<<<<<.>>>>....<<.>>>>.
<<<.>....<.
>>>.<<<<.<....<.
Lucca Ferri
sumber
2

05AB1E , 32 29 26 byte (Terima kasih kepada Emigna / Adnan)

•jÀňiXƒÐ[Z•6B6ôvy5ÝJ¹"_ |/\ÿ"‡,

Cobalah online!

•jÀňiXƒÐ[Z•6B6ô # Push ['110011', '135541', '355554', '255552', '400003']
vy               # For each encrypted block...
  5ÝJ            # Push 012345.
     ¹"_ |/\ÿ"   # Push "_ |/\{input_char}".
              ‡, # Swap the charsets.

Versi 29 byte (lebih pintar tanpa iterasi diperlukan karena meng-encode baris baru juga):

05AB1E , 29 byte (Emigna)

•P£<r7»TwDšç6•5ÝJI"
_/ÿ\|"‡.c

Cobalah online 2!


Ekstensi 26 byte dari saran Emigna, menggunakan S untuk memisahkan karakter ke dalam array, kemudian [b] untuk menginterpolasi setiap digit dengan lokasi yang sesuai dalam array sebelumnya. Ini pada dasarnya adalah transliterasi elemen-bijaksana (pintar).

05AB1E , 26 byte (Adnan)

"
_/ÿ\|"•P£<r7»TwDšç6•Sè.c

Cobalah secara online 3!

Guci Gurita Ajaib
sumber
1
Ini lebih pendek 3 byte. Lebih mirip dengan jawaban Anda daripada jawaban saya :)
Emigna
1
@Emigna bahwa transliterasi langsung menggunakan baris baru adalah ide baru, saya suka itu; ini dengan jujur ​​bisa menjatuhkan 5 byte dari banyak solusi saya yang ada.
Guci Gurita Ajaib
2
Selama 26 byte .
Adnan
1
@adnan - licik licik ...
Magic Gurita Guci
Saya merasa hampir semua jawaban saya perlu dihargai Admigna, tidak akan benar-benar tahu bahasa tanpa kedua contoh konstan Anda.
Guci Gurita Ajaib
2

PHP, 51 byte

$a.=$a=$argn;echo"  __
 /$a\
/$a$a\
|$a$a|
\____/";

PHP, 58 Bytes tanpa linebreak fisik

$a.=$a=$argn;echo"  __\n /$a\\\n/$a$a\\\n|$a$a|\n\\____/";

jalankan ini dengan -R opsi ini

61 Bytes

echo strtr("  __\n /88\\\n/8888\\\n|8888|\n\\____/",8,$argn);
Jörg Hülsermann
sumber
Simpan nilai dua kali lipat; menghapus ruang yang tidak perlu; gunakan karakter baris baru literal: pastebin.com/EghdAYMf
manatwork
@manatwork Terima kasih saya belum benar-benar berpikir tentang melipatgandakan input
Jörg Hülsermann
simpan 7 byte dengan linebreak fisik dan tidak melarikan diri backslash (yang terakhir tidak perlu melarikan diri lagi pula). Oh dan btw: -Rbukan parameter, itu opsi.
Titus
@Titus saya benci linebreak fisik Done
Jörg Hülsermann
@Titus, benar, meskipun man phpmemanggil mereka parameter : "Juga dimungkinkan untuk memproses input standar baris demi baris menggunakan parameter -R atau -F."
manatwork
2

BF, 142 140 byte

++++[->++++<]>[->+++>++++++>+>++++++>++>++++++++<<<<<<],>->---->------>->..<..<.>>.<<<<.<..
>>.>.<<.<....>>.>.>>>----.<....>.<<<.<.>>....<<<.

Ini dibagi menjadi dua garis untuk kejelasan; baris baru tidak dihitung.

Cukup mudah untuk menulis hal seperti ini di BF, tetapi tidak sepele bagaimana mengoptimalkan urutan sel untuk meminimalkan gerakan. Saya menulis naskah brute-forcer untuk mencoba semua kombinasi dan menemukan yang terpendek, dan saya bermain golf sedikit untuk menjelaskan peluang golf yang saya tidak termasuk dalam brute-forcer.

Buah Esolanging
sumber
@JoKing Saya sarankan Anda memposting itu sebagai jawaban yang terpisah, karena tampaknya sangat berbeda dari saya.
Buah Esolanging
2

brainfuck , 114 byte

-----[[<+>->++>++<<]->]<+++++++++++<+..<..>>.<.<<.>>,..<---.>>.<<<.>>....<.>>.<<<<---.>>>....<<<.>>>>.<<.+++....<.

Cobalah online!

Saya telah menggunakan BF Crunch di sini untuk menemukan cara yang lebih optimal untuk menghasilkan karakter individu.

Jo King
sumber
2

C (gcc) , 95 88 85 byte

Terima kasih kepada Albert untuk -7 byte

Terima kasih juga untuk ceilingcat -3 byte

f(c){for(int*s=L"  __\n /00\\\n/0000\\\n|0000|\n\\____/\n";*s;s+=printf(*s%6?s:&c));}

Cobalah online!

Cleblanc
sumber
Jangan mendeklarasikan *qsarangnya saja ke dalam for-loop Anda untuk menghemat 5 byte. char*s;f(c){for(s=" __\n /11\\\n/1111\\\n|1111|\n\\____/\n";*s;putchar(*s^49?*s:c),s++);}
Albert Renshaw
Anda juga dapat menyimpan 2 byte lebih banyak dari itu dengan mendeklarasikan *sdi dalam argumen deklarasi for-loop:f(c){for(char*s=" __\n /11\\\n/1111\\\n|1111|\n\\____/\n";*s;putchar(*s^49?*s:c),s++);}
Albert Renshaw
Anda juga dapat mencukur 1 byte lebih banyak dengan memeriksa karakter ASCII yang memiliki nilai numerik satu digit. 1ada 49di ASCII tapi itu 2 byte, gunakan sesuatu dengan nilai 0-9, misalnya karakter tabulasi `` adalah nilai ASCII 9.
Albert Renshaw
Sarankan *s;f(c){for(salih-alihf(c){for(int*
ceilingcat
1

SpecBAS - 70 byte

1 INPUT a$:  ?"  __"'" /";a$*2;"\"'"/";a$*4;"\"'"|";a$*4;"|"'"\____/"

?adalah singkatan untuk PRINTperintah, dan apostrof memindahkan kursor ke baris berikutnya.

Brian
sumber
1

Python, 59 byte

lambda n:r'''  __
 /a\
/aa\
|aa|
\____/'''.replace('a',n*2)
Rɪᴋᴇʀ
sumber
1

Lua, 66 byte

print((([[  __
 /ee\
/eeee\
|eeee|
\____/]]):gsub("e",io.read())))

((([[#Berhasil]])))

Pengobrol
sumber
1

Japt , 35 byte

"  __
 /01
/001
|00|
1____/"d0U²1'\

Cobalah online!

Solusi 41 byte:

[S²'_²RS'/U²'\R'/U²²'\R'|U²²'|R'\'_²²'/]q

Cobalah online!

Oliver
sumber
Bagus Upaya pertama saya adalah ini selama 36 byte, tetapi sepertinya menggunakan dbyte lebih pendek.
ETHproduksi
1

[R], 65 byte

cat(gsub('x',scan(,''),"  __\n /xx\\\n/xxxx\\\n|xxxx|\n\\____/"))

Cukup tidak spektakuler, temukan yang lebih pendek di R ... Ini gsub dasar Anda

pengguna11599
sumber
1

C ++ 208 byte

Menanggapi komentar: Ini adalah posting ulang lengkap.

#include<iostream>
using namespace std;int main(){char e;cin>>e;cout<<"  __  \n";cout<<" /"<<e<<e<<"\\ "<<endl;cout<<"/"<<e<<e<<e<<e<<"\\"<<endl;cout<<"|"<<e<<e<<e<<e<<"|"<<endl;cout<<"\\____/ \n";return 0;}
takintoolong
sumber
1

C # , 56 byte


Golf

i=>"  __\n /i\\\n/ii\\\n|ii|\n\\____/".Replace("i",i+i);

Tidak disatukan

i => 
   "  __\n /i\\\n/ii\\\n|ii|\n\\____/"
      .Replace( "i", i + i );

Tidak terbaca dibaca

i => 
   "  __\n /i\\\n/ii\\\n|ii|\n\\____/"

      // Replace every instance of 'i' with the input cloned twice
      .Replace( "i", i + i );

Kode lengkap

using System;
using System.Collections.Generic;

namespace Namespace {
   class Program {
      static void Main( String[] args ) {
         Func<String, String> f = i => 
            "  __\n /i\\\n/ii\\\n|ii|\n\\____/"
               .Replace( "i", i + i );

         List<String>
            testCases = new List<String>() {
               "-",
               "%",
               "~",
               "o",
               " ",
         };

         foreach( String testCase in testCases ) {
            Console.WriteLine( $" Input: {testCase}\nOutput:\n{f( testCase )}\n" );
         }

         Console.ReadLine();
      }
   }
}

Rilis

  • v1.0 - 56 bytes- Solusi awal.

Catatan

Hasil cetak dalam tautan yang disediakan tidak akan terlihat seperti pura-pura, karena font yang digunakan tidak menjadi monospace.

auhmaan
sumber
1

C (gcc) , 87 byte

e(d){printf("  __\n /%c%c\\\n/%c%c%c%c\\\n|%c%c%c%c|\n\\____/\n",d,d,d,d,d,d,d,d,d,d);}

printf tanpa stdio.h menyebabkan peringatan tetapi tidak ada kesalahan, yang memungkinkan kompilasi berhasil.

Penjelasan

Pernyataan printf yang meng-crams semuanya menjadi satu baris, memformat karakter dekorasi dengan% c.

Cobalah online

Jake Reynolds
sumber