Tulis program atau fungsi yang "bereaksi" ke bilangan bulat yang diberikan n (input melalui parameter fungsi / args / stdin)
Program ini tidak peduli dengan angka negatif, suka bahkan, tidak suka angka ganjil dan takut nomor 13.
Seharusnya menampilkan yang berikut:
jika n <0:
--------------------------
| |
| |
(| _ _ |)
| |
| |
| |
| |
| oooooooooo |
| |
| |
| |
--------------------------
jika n% 2 == 0 dan n> -1:
--------------------------
| |
| |
(| ^ ^ |)
| |
| |
| |
| o o |
| oooooooooo |
| |
| |
| |
--------------------------
jika n% 2 == 1 dan n> -1 dan n! = 13:
--------------------------
| |
| |
(| > < |)
| |
| |
| |
| |
| oooooooooo |
| o o |
| |
| |
--------------------------
jika n == 13:
--------------------------
| |
| |
(| (O) (O) |)
| |
| |
| oooooooooo |
| o o |
| oooooooooo |
| |
| |
| |
--------------------------
Solusi terpendek dalam byte menang.
Jawaban:
CJam - 169
Cobalah di http://cjam.aditsu.net/
Penjelasan tingkat tinggi:
S24*aB*
membuat matriks penuh spasi, untuk wajah tanpa tepili_D=3{_0<2{_2%}?}?\;:X
membaca angka dan mengubahnya menjadi 0 (datar), 1 (aneh), 2 (negatif) atau 3 (13), menyimpannya dalam XX"^^<>__":s"(O)"a2*+2/=~
memilih jenis mata (2 string){S*_@+_,C\-S*2*+@@++}:F
- fungsi F mengambil 2 string (katakanlah S1, S2) dan angka (katakanlah N) dan membuat string 24-char yang berisi spasi N, S2, spasi lainnya, spasi S1, N2 (eyes) 6X3=- (F)~t
menempatkan garis mata dalam matriks7'o5*_7F:Mt
menempatkan garis mulut yang umum dalam matriks, dan juga menyimpannya dalam MX3={5Mt6'o_7Ft}*
jika X adalah 3, menempatkan M lagi dalam matriks, 2 garis lebih tinggi, dan menempatkan sisi mulut di antaraX2<{X2*6+'o_5Ft}*
jika X adalah 0 atau 1, ia menempatkan sudut mulut di posisi yang sesuai{" |"\+'|+}%
menambahkan tepi vertikal dan ruang di sebelah kiri pada setiap garisS'-26*+aa2*\*
menambahkan tepi horizontal_3=1>"()"\*3\t
menambah telingaN*
menambahkan pemisah baris barusumber
Ruby,
241224Ini mendefinisikan fungsi yang disebut seperti
f[13]
. Saya yakin ada banyak ruang untuk perbaikan, sama seperti apa yang Ventero bantu saya lakukan di sini .Pada dasarnya, saya membangun kerangka kasar terlebih dahulu, dan menempelkan telinga serta mulut. Lalu saya letakkan mata tergantung pada jumlahnya. Sambil mengerjakan karakter untuk dimasukkan ke dalam mata, saya juga menjaga mulut yang berbeda jadi saya tidak perlu memeriksa jenis nomor lagi. Akhirnya saya perlu memperbaiki mata kanan untuk angka ganjil, karena kode di atas menempatkan string yang sama di kedua mata.
sumber
C # - 349 byte
Tentu tidak akan memenangkan penghargaan apa pun, tetapi cara yang berbeda dalam melakukan sesuatu.
Golf:
Kurang golf:
sumber
Python 2 - 255
Tidak terlalu pendek, tetapi saya tetap akan mempostingnya:
Saya melewatkan tugas item untuk string dengan Python! :( Lalu orang bisa mulai dengan matriks karakter dan cukup memodifikasi mata dan mulut.
sumber
b=bytearray()
dan kemudianb+'mystring'
akan menghasilkan bytearray yang bisa diubah, yang mencetak dengan cara yang sama seperti string lainnya.Python 2, 257
Bukan pemenang, tetapi pendekatan alternatif, sudah cukup dekat! Saya berharap dapat memeras beberapa karakter lagi darinya. Buat semua garis sepotong demi sepotong, menggunakan substring umum untuk benar-benar memeras byte.
sumber
CJam, 202
sumber