The 21 Hairstyles of the Apocalypse
Diberikan daftar angka antara 1 dan 21 (atau 0 dan 20) menghasilkan gambar "dijahit bersama" dari wajah-wajah berikut ( lihat aturan untuk informasi jahitan ):
___ ,,, ooo === +++ ### -*~*-
(o o) (o o) (o o) (o o) (o o) (o o) (o o)
ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-
*** ||| _/7 ))) ((( xxx @__
(o o) (o o) (o o) (o o) (o o) (o o) (o o)
ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-
((_ >X< '*` ^^^ )|( \|/ &&&
(o o) (o o) (o o) (o o) (o o) (o o) (o o)
ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-
Setiap wajah unik yang terdaftar di baris baru (# adalah ID integer untuk wajah):
___
(o o)
ooO--(_)--Ooo #1
,,,
(o o)
ooO--(_)--Ooo #2
ooo
(o o)
ooO--(_)--Ooo #3
===
(o o)
ooO--(_)--Ooo #4
+++
(o o)
ooO--(_)--Ooo #5
###
(o o)
ooO--(_)--Ooo #6
-*~*-
(o o)
ooO--(_)--Ooo #7
***
(o o)
ooO--(_)--Ooo #8
|||
(o o)
ooO--(_)--Ooo #9
_/7
(o o)
ooO--(_)--Ooo #10
)))
(o o)
ooO--(_)--Ooo #11
(((
(o o)
ooO--(_)--Ooo #12
xxx
(o o)
ooO--(_)--Ooo #13
@__
(o o)
ooO--(_)--Ooo #14
((_
(o o)
ooO--(_)--Ooo #15
>X<
(o o)
ooO--(_)--Ooo #16
'*`
(o o)
ooO--(_)--Ooo #17
^^^
(o o)
ooO--(_)--Ooo #18
)|(
(o o)
ooO--(_)--Ooo #19
\|/
(o o)
ooO--(_)--Ooo #20
&&&
(o o)
ooO--(_)--Ooo #21
Wajahnya adalah sebagai berikut:
hhhhh
(o o)
ooO--(_)--OooS
Di mana h
gaya rambut apokaliptik dinamis dan S
potensi tanda hubung jahitan.
Contohnya
Memasukkan: [1,2,3,4,5]
Keluaran:
___ ,,, ooo === +++
(o o) (o o) (o o) (o o) (o o)
ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-
Memasukkan: [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21]
Keluaran:
___ ,,, ooo === +++ ### -*~*- *** ||| _/7 ))) ((( xxx @__ ((_ >X< '*` ^^^ )|( \|/ &&&
(o o) (o o) (o o) (o o) (o o) (o o) (o o) (o o) (o o) (o o) (o o) (o o) (o o) (o o) (o o) (o o) (o o) (o o) (o o) (o o) (o o)
ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-
Masukan: ["Fraggle Rock"]
/ [22]
/ [-21041024]
/[22,23,24,25,26]
Keluaran: Nobody cares.
Memasukkan: [1,1,1,1]
Keluaran:
___ ___ ___ ___
(o o) (o o) (o o) (o o)
ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-
Aturan
- Mendahului dan mengikuti baris baru / spasi / tanda hubung baik-baik saja.
- Wajah dapat muncul lebih dari satu kali pada input.
- Jika ada nomor yang tidak valid dalam input Anda mungkin memiliki perilaku yang tidak terdefinisi.
- Jahitan:
- Wajah yang dijahit akan digabungkan dengan satu tanda hubung pada baris bawah (3).
- Wajah-wajah semua akan berada pada satu baris (tidak seperti gambar pertama).
- Input dapat 0 atau 1 diindeks, dengan 20 sebagai maksimum untuk 0, 21 untuk 1.
- Ini adalah kode-golf , kemenangan byte-count terendah.
Jawaban:
Japt
-R
,12211711311010910710510410310210099 byte1-diindeks, dengan pembungkus indeks. Saya telah mengikuti spek di sini, yang membutuhkan tanda hubung di antara baris terakhir dari setiap wajah, bukan pada kasus uji, yang mencakup tanda hubung setelah baris terakhir dari setiap wajah.
Cobalah
sumber
&
untuk mengambil keuntunganm³
adalah jenius. Terutama karena itu menjadikannya berbasis 1.&
sana jika saya membuatnya berdasarkan 1;) Masih merasa ada lebih banyak untuk golf di sini tapi sudah terlambat sehingga harus menunggu sampai besok.Python 2 , 209 byte
Cobalah online!
Pengindeksan berbasis 0; tidak ada yang pintar di sini, hanya data yang diakses melalui slicing dan menggunakan exec bukan loop.
sumber
Arang ,
103102 byteCobalah online! Tautan adalah untuk mengucapkan versi kode. Penjelasan:
Ulangi input dua kali. Setiap hasil kemudian dicetak secara tersirat pada barisnya sendiri.
Pada loop kedua, cukup hasilkan mata.
Bungkus gaya rambut 6 in
-
s, gaya rambut lainnya di luar angkasa.Ekstrak tiga karakter gaya rambut dari string terkompresi.
Masukkan sembilan spasi di antara setiap rambut atau mata.
Pindahkan 4 spasi ke kiri.
Cetak sisa wajah, bergabung dengan a
-
.sumber
R ,
413391 byteTerima kasih Giuseppe untuk 22 byte lebih sedikit dan mendapatkan ini di bawah 400 byte.
Cobalah online!
sumber
utf8ToInt
danintToUtf8
rep
untuk mempersingkat:for(i in s)K(I(c(rep<--
JavaScript (ES6),
200199 byteMengharapkan input 1-diindeks.
Cobalah online!
Berkomentar
sumber
Ruby , 164 byte
Nol diindeks. Cobalah online!
Semua hal sulit terjadi di baris paling atas.
"_,o=+# *| )(x ^ &"
berisi semua gaya rambut dengan 3 karakter yang identik, dari mana kita memilihi
karakter kej
,.jika
j
bukan spasi, ekspresi berikut mengembalikan 3 salinan karakter. Jika itu ruang, kami memilih gaya rambut yang benar dari antara%w{}
. Gaya rambut "aneh" adalah angka 6,9,13,14,15,16,18,19 dani%11-2
memberikan hash yang sempurna untuk0..7
Yang tersisa adalah mengisi 14 ruang (tengah) dan mencetak jumlah lumayan / bawah.
sumber
center(14)
Python 2 , 204 byte
Cobalah online!
sumber
Java 8,
273263 byteCobalah online.
Penjelasan:
sumber
R ,
247242 byteCobalah online!
Sekarang, mencoba membawa R ke jumlah byte yang lebih mudah dikelola ...
Karena melakukan manipulasi karakter dalam R sangat sia-sia, saya memutuskan untuk mendaftarkan semua pola wajah dan gaya rambut sepenuhnya. Untuk mencetak gaya rambut yang cantik, saya menggunakan
format
fungsijustify="centre"
. Sayangnya, kita perlu menggunakan karakter padding tambahani==20
karenaformat
menghitung padding seolah-olah backslash lolos, seperti\\|/
.Versi saat ini tidak menggunakan tanda hubung tambahan.
Sunting: Kredit ke JayCe untuk -2 dan Giuseppe untuk -3 byte.
sumber
justify="centre"
saya mungkin dapat menggunakannya kembali. Kurang dua karakter :"/"=rep
format(h[i],,,,"c",14+!20-i)
*
terlihat lebih baik - sekarang menyerupaistring * number
operasi yang umum di banyak bahasa lain!C!( C-Wow 1.1.0), 251 Bytes
(Membutuhkan argumen untuk diteruskan pada eksekusi program, dipisahkan oleh ruang)
Versi tidak disatukan:
sumber
Merah ,
333319 byteCobalah online!
sumber
Ruby , 163 byte
Cobalah online!
Diindeks 0. Saya mengutak-atik jawaban Level River St dan menemukan pendekatan lain untuk menyandikan gaya rambut, tampaknya golfiness serupa. Di sini, kami memperlakukan potongan rambut 5-char "terpanjang" sebagai kasus khusus, pola-pola sepele di bagian pertama dari daftar dikodekan oleh masing-masing 1 karakter, dan pada bagian kedua semua pola 3-karakter terdaftar secara literal, tidak peduli - apakah karakter-karakter itu berbeda atau tidak. Akhirnya muncul juga muka monyet-muka.
sumber
C (gcc) ,
210212 byte-4 bytes berkat ceilingcat . (Itu tumbuh lagi ketika saya memperbaiki bug yang dimiliki kode asli.)
Cukup mudah.
Cobalah online!
sumber
PowerShell ,
187171 byte-16 byte berkat mazzy
Cobalah online!
Diindeks 0, memiliki tanda hubung tambahan.
Belum dibuka:
Tidak ada yang terlalu mewah. Hanya baris pertama yang memiliki beberapa logika yang layak di dalamnya. Ini mengindeks ke dalam string rambut dengan menggunakan
$current_entry_value*3
dan mengambil potongan itu dengan menggunakans
ubstring
, sebelum menggabungkan semua potongan menjadi satu garis besar. Mengalami masalah `melarikan diri dari siset berikutnya, membuat saya bertanya-tanya mengapa saya mendapatkan kesalahan IndexOutOfBounds tapi itu sudah diperbaiki. Sekarang menggunakan cara yang jauh lebih baik untuk menggabungkan baris pertama.195 Bytes untuk mengikuti spesifikasi tanpa tanda hubung leading / trailing
sumber
Python 3 , 240 byte
Cobalah online!
sumber
Pesona Rahasia , 313 byte
Cobalah online!
Ringkas secara wajar dalam hal mengompresi string dan menggunakan kembali segmen jika memungkinkan serta menggunakan nilai input sebagai offset lompatan langsung saat
B
peternakan.Jika ruang trailing berlebih diizinkan, ini dapat dipersingkat 2 byte dengan menghilangkan
4-
pada baris terakhir. +2 byte untuk a1-
jika final-
dimaksudkan tidak ada di sana (cocokkan spec, melanggar contoh).Potongan,
" (o o) "
menjengkelkan tidak mungkin untuk dikompres, karena membangunnya menggunakan hal-hal seperti" "4*
akhirnya menjadi jumlah byte yang persis sama.Lulus input> 21 melakukan hal-hal menyenangkan. Misalnya satu 22 memberikan mencukur dekat .
sumber