(terinspirasi oleh pertanyaan lebih lanjut tentang Tinjauan Kode)
Misalkan dua orang bermain Hangman , tetapi Anda hanya mendengar permainan dan ingin menggambar status saat ini.
Diberi dua kata sebagai input, di mana kata-kata tersebut cocok [A-Z]+
atau [a-z]+
(pilihan Anda), menampilkan kondisi permainan hangman saat ini sebagai seni ASCII, mengikuti aturan di bawah ini.
- Kata pertama adalah kata yang harus ditebak, dan kata kedua adalah huruf yang sudah bisa ditebak. Ini dapat diambil sebagai input dalam urutan apa pun.
- Kata yang akan ditebak dijamin tidak kosong, tetapi huruf yang sudah ditebak mungkin kosong (yaitu, seolah-olah ini adalah awal permainan).
- Gim akan selalu menjadi gim hangman yang valid (yaitu, huruf yang diprediksi tidak akan diduplikasi, huruf tidak akan ditebak melewati akhir permainan, Anda hanya akan menerima huruf sebagai masukan, dll.).
- Di bawah gambar algojo haruslah kata yang akan ditebak, dengan
_
pengganti huruf yang tidak diketahui, dipisahkan oleh spasi. Misalnya, jika kata yang akan ditebak adalahBOAT
, maka di bawah gambar algojo harus_ _ _ _
. Jika kata ituBOAT
denganA
tebakan, maka di bawah gambar harus_ _ A _
. - Di bawah kata yang akan ditebak haruslah huruf yang sudah menebak yang tidak ada dalam kata. Ini dapat dalam urutan apa pun, dan dapat dipisahkan oleh pemisah non-alfabet, jika diinginkan.
Berikut adalah kondisi permainan hangman, dari awal hingga akhir pertandingan. Setiap huruf yang ditebak salah mengajukan status satu per satu. Jadi, huruf yang salah duga pertama membuat kepala O
muncul, selanjutnya membuat tubuh |
muncul, dll.
+---+
| |
|
|
|
|
=========
+---+
| |
O |
|
|
|
=========
+---+
| |
O |
| |
|
|
=========
+---+
| |
O |
/| |
|
|
=========
+---+
| |
O |
/|\ |
|
|
=========
+---+
| |
O |
/|\ |
/ |
|
=========
+---+
| |
O |
/|\ |
/ \ |
|
=========
Memasukkan
- Dua string dalam format apa pun yang nyaman , dengan yang pertama dijamin tidak kosong.
- Anda dapat mengambil input dalam urutan apa pun (mis., Kata untuk menebak dan kemudian menebak huruf, atau sebaliknya). Silakan sebutkan dalam kiriman Anda, pesanan input.
Keluaran
Representasi seni ASCII yang dihasilkan dari permainan algojo sedang berlangsung, seperti yang dijelaskan di atas, lagi dalam format yang mudah.
Aturan
- Leading atau trailing newlines atau whitespace semuanya opsional, asalkan karakter itu sendiri berbaris dengan benar.
- Program lengkap atau fungsi dapat diterima. Jika suatu fungsi, Anda dapat mengembalikan output daripada mencetaknya.
- Jika memungkinkan, harap sertakan tautan ke lingkungan pengujian online agar orang lain dapat mencoba kode Anda!
- Celah standar dilarang.
- Ini adalah kode-golf sehingga semua aturan golf biasa berlaku, dan kode terpendek (dalam byte) menang.
Contohnya
# 1
BOAT
dan ATG
+---+
| |
O |
|
|
|
=========
_ _ A T
G
# 2
ZEPPELIN
dan
+---+
| |
|
|
|
|
=========
_ _ _ _ _ _ _ _
# 3
ZEPPELIN
dan EATOLINSHR
+---+
| |
O |
/|\ |
/ \ |
|
=========
_ E _ _ E L I N
A T O S H R
# 4
RHYTHM
dan ABCDE
+---+
| |
O |
/|\ |
/ |
|
=========
_ _ _ _ _ _
EDCBA
# 5
BOAT
dan ATOB
+---+
| |
|
|
|
|
=========
B O A T
# 6
AIRPLANE
dan AJKEI
+---+
| |
O |
| |
|
|
=========
A I _ _ _ A _ E
KJ
Jawaban:
Python 2 ,
215192184183 byte-8 byte terima kasih kepada Raphaël Côté
-1 byte terima kasih kepada Jonathan Frech
Cobalah online!
sumber
|
) alih-alih lengan kiri (/
) ketika ada 2 huruf yang salah: Cobalah secara online"\\/"
sama dengan"\/"
.Arang ,
836968 byteCobalah online! Tautan adalah untuk mengucapkan versi kode. Sunting: Disimpan 14 byte dengan beralih ke
switch
. Disimpan 1 byte dengan mencetak tunggal|
sebagai literal. Catatan: Pada saat pertanyaan itu ditetapkan,switch
tidak berfungsi sama sekali dalam mode Verbose dan membutuhkan trailing«
dalam mode Succinct (versi saat ini pada TIO tidak memiliki bug, jadi itu menunjukkan terjemahan Ringkas sebagai 67 byte), sementaraMap
itu bug mencegah saya menggunakanPrint(Join(Map(q, Ternary(Count(h, i), i, "_")), " "));
. Untungnya saya berhasil membuat kludge dengan panjang yang sama (dan memang saya juga mencoba mengalihkan loop lain ke Peta tetapi juga keluar dengan panjang yang sama). Penjelasan:sumber
Python 2 , 220 byte
Cobalah online!
-35 byte berkat Raphaël Côté
-20 byte menggunakan set
-1 byte berkat micsthepick
sumber
translate
tapi itu ternyata lebih lama lol.for i in range(7):s=s.replace(`i`,'O|/\\/\\'[i] if i<c else ' ')
. Ini memberi Anda satu loop dan Anda hanya mengganti ganti jika Anda lebih dari c. Anda dapat menurunkan hingga 251 byte dengan cara ini :)Jelly ,
7273 byte+1 memperbaiki bug permainan ace yang menunjukkan orang yang digantung penuh (diubah
LN
menjadiLạ6
mendekati akhir)Tautan diad yang mengambil kata di sebelah kiri dan huruf (unik dan dalam gim) di sebelah kanan dan mengembalikan daftar karakter, atau program lengkap yang mengambil input sebagai argumen baris perintah dan mencetak hasilnya.
Cobalah online!
Bagaimana?
Pertama:
Apakah nilai numerik dari orang digantung penuh di dasar 9, di mana masing-masing dari 9 digit merupakan salah satu karakter:
<space>
,<newline>
,-
,|
,O
,/
,\
,=
, atau+
.sisa program:
sumber
BOAT
danATOB
uji kasus. Cobalah online!Japt v2 ,
94918381 byte-3 byte dari beberapa ide dari pendekatan @ETHproductions untuk ini .
-8 byte dengan menggunakan rotasi string multiline.
-2 byte dengan menggunakan v2.
Membawa input kata sebagai array karakter, dengan kata menebak terlebih dahulu dan huruf menebak kedua. Huruf yang salah ditampilkan dipisahkan oleh
,
s. Ketika tidak ada huruf yang salah, baris terakhir kosong (artinya keluaran berisi baris tambahan tambahan).Cobalah online!
Penjelasan
Tersirat:
U
danV
merupakan array char input.Mulai array dan dorong string format man menggantung, diputar ke kiri 90 °.
Ganti (
r
) setiap digit (\d
) dengan fungsi berikut:Jika digitnya adalah
>=
(¨
) jumlah tebakan yang salah (VkU l
), spasi (S
), jika tidak, dapatkan bagian tubuh yang sesuai untuk digit itu ("..."gZ
).Putar pria yang menggantung ke kanan 90 ° dan tekan
=
berulang 3 * 3 (³³
) kali ke array.Dorong kata-ke-tebakan, dengan huruf yang dipetakan (
¡
) ke diri mereka sendiri (X
) jika terdapat dalamV
(VøX
), atau_
jika tidak, dan bergabung dengan spasi (¸
), ke array.Dorong huruf-huruf yang ditebak, dengan huruf-huruf dalam kata-ke-tebakan dihapus (
k
), ke larik keluaran. Tutup array dan gabungkan dengan baris baru (·
).Rotasi divisualisasikan:
sumber
W
dapat bekerja karena bagian-bagian tubuh tidak muncul kiri-ke-kanan / atas-ke-bawah. Saya dapat menyimpan beberapa byte dari versi Anda.05AB1E , 83 byte
Cobalah online!
Bitmap:
05AB1E , 18 byte
Cobalah online!
Ini mendorong rencana bitmap berikut:
Di mana byte tambahan berikut:
05AB1E , 13 byte
Cobalah online!
Ganti potongan bitmap dengan karakter yang sesuai, tinggalkan 5 untuk mengganti potongan hangman nanti:
The Hanged Man:
Selanjutnya, kami menghitung berapa kali pengguna salah menebak dengan mengambil huruf yang ada di input kedua, tetapi tidak di input pertama:
05AB1E , 6 byte
Cobalah online!
Akhirnya, kami menggunakan bitmap sekunder untuk menggantikan orang yang digantung, dipisahkan oleh baris baru dan menyiapkannya untuk cetakan akhir:
05AB1E , 26 byte
Cobalah online!
Ini menghasilkan potongan pertama, hanya potongan yang tersisa yang menghasilkan dua kata di bagian bawah dalam format berbeda ...
Kata-kata Di Bawah Ini:
Cetak kata pertama tanpa tebakan yang hilang:
05AB1E , 15 byte
Cobalah online!
05AB1E , 5 byte
Cobalah online!
Cetak perkiraan tak terjawab yang dihitung dari sebelumnya kami simpan dalam register.
sumber
/
) di depan badan (|
). Dua huruf yang salah akan menghasilkan bagian kepala dan tubuh yang ditampilkan. Cobalah onlineJelly , 86 byte
Cobalah online!
Wah ... ini menyenangkan. Saya tidak pernah menggunakan banyak
¤
karakter.Bagaimana itu bekerja
sumber
C #,
305296 byteSvaed 9 byte berkat @raznagul.
Cobalah online!
Versi Lengkap / Diformat:
Ini juga berfungsi untuk 314 byte (mungkin masih bisa lebih pendek):
sumber
g.Select(c=>!w.Contains(c)?c+"":"")
dengang.Where(c=>!w.Contains(c))
.JavaScript (ES6),
203196187186185184180177176 byteMengambil input sebagai 2 array karakter individual dalam sintaks currying.
CobaMainkansumber
1
,324
,5 6
(lihat kasus tes terakhir).Scala ,
392389 byteIni mungkin masih sangat golf.
Ini ada di dalam fungsi pengambilan
s
dant
sebagai parameter, dengans
kata untuk menebak dant
string yang berisi huruf yang sudah dicoba.EDIT:
-1 byte:
t.contains(x) -> t contains x
-1 byte:
s.contains(x) -> s contains x
-1 byte:
.mkString(" ") -> mkString " "
Cobalah online!
sumber
PHP 7, 246 byte
mengambil input dari argumen baris perintah. Jalankan dengan
-nr
atau coba online .sumber