Adakah orang di sini yang penggemar keras Bethesda? Mungkin Anda lebih suka Obsidian Entertainment? Nah, jika Anda salah satu dari hal-hal itu daripada gambar berikut harus relatif akrab bagi Anda.
Saya sudah bebas mempersiapkan tantangan ASCII-Art yang agak unik, jadi inilah petunjuk pertama tentang apa yang akan saya lakukan:
_____________________________________________________
/ \
| _____________________________________________ |
| | | |
| | Welcome to ROBCO Industries (TM) Termlink | |
| | Password Required | |
| | Attempts Remaining: | |
| | | |
| | 0x01 | 0x0D | |
| | 0x02 | 0x0E | |
| | 0x03 | 0x0F | |
| | 0x04 | 0x10 | |
| | 0x05 | 0x11 | |
| | 0x06 | 0x12 | |
| | 0x07 | 0x13 | |
| | 0x08 | 0x14 | |
| | 0x09 | 0x15 | |
| | 0x0A | 0x16 | |
| | 0x0B | 0x17 | |
| | 0x0C | 0x18 | |
| |_____________________________________________| |
| |
\_______________________________________________________/
\_______________________________________/
Ini adalah templat yang sangat mendasar (kosong) untuk desain terminal RobCo Fallout di ASCII murni, tugas Anda adalah:
- Pertama, hasilkan templat ini.
- Kemudian, berikan daftar string
l
dan nomor0 <= n <= 4
untuk mengisinya!
Dua bagian dinamis dari terminal peretasan yang gagal adalah:
Jumlah Usaha
- Jumlah upaya yang tersisa (ditunjukkan oleh kotak yang dibatasi ruang.
- Untuk tujuan tantangan ini, Anda akan menggunakan
X
sebagai gantinya■
.
- Untuk tujuan tantangan ini, Anda akan menggunakan
Kata Sandi
- Kata sandi, yang didefinisikan oleh
l
, diselingi dengan simbol ASCII yang dapat dicetak secara acak. - Kata sandi, seperti yang Anda tahu dari contoh, dapat membungkus banyak baris (
NAMES
). - Semua kata sandi di layar terminal harus memiliki peluang yang sama untuk berada di mana saja.
- Semua kata sandi dapat memiliki panjang yang sama, meskipun ini tidak masalah.
- Daftar simbol yang dapat digunakan untuk password terpisah:
!"#$%&'()*+/:;<=>?@[\]^_{|}
. - Semua kata sandi
l
harus memiliki panjang yang sama. - PASSWORDS HARUS MEMILIKI POTENSI UNTUK MEMBUAT KOLOM ANTARA KEDUA.
- Ini juga berlaku untuk baris, tetapi hanya ke alamat byte yang lebih tinggi (0x18-> 0x01 tidak valid).
- Ruang tampilan untuk kata sandi di kedua sisi adalah 15 lebar (dengan ruang di kedua sisi).
- Anda mungkin menganggap tidak ada kata yang
l
lebih panjang dari ini.
- Anda mungkin menganggap tidak ada kata yang
- Kata sandi hanya alfabet, artinya hanya huruf.
Contoh:
l = ["SMART","ENACT","SWORE","PITYS","SMELL","CARTS","RACES"]
, n = 4
_____________________________________________________
/ \
| _____________________________________________ |
| | | |
| | Welcome to ROBCO Industries (TM) Termlink | |
| | Password Required | |
| | Attempts Remaining: X X X X | | # N = 4 drives these X's.
| | | |
| | 0x01 $?_/%$ENACT||"} | 0x0D TYS"_'$\#|^%&{} | |
| | 0x02 }:!*@{/_<"[]#>; | 0x0E #{!"^&\]'|}_[$% | |
| | 0x03 $%&'()*+/:;<\_' | 0x0F }|[(%SMELL/_$@( | |
| | 0x04 ^SMART(!@$*'^_@ | 0x10 []_#!"{|}'%$\&^ | |
| | 0x05 (*@#%}*(!%)^(_! | 0x11 %$}[!\#'^&_]{|" | |
| | 0x06 $%&'()*+/:;<_@) | 0x12 \SWORE|%'_!}\^" | |
| | 0x07 "/')=*%!&>#<:$+ | 0x13 ^{['&$|!_]%\"#} | |
| | 0x08 ;'*$&"(<%!#)RAC | 0x14 ']!|^#[$"_\}&{% | |
| | 0x09 ES:($&';%#+"<*/ | 0x15 @)($!CARTS*!@$_ | |
| | 0x0A ;'*$&"(<%!#)/+: | 0x16 !#%${"'}&[]^|_\ | |
| | 0x0B |'_!}$\%["#^{&] | 0x17 ]"_#$&}^%[{|\'! | |
| | 0x0C #{!"^&\]'|}_[PI | 0x18 _![&#{$%\^'|}"] | | # Notice how PITYS wrapped.
| |_____________________________________________| |
| |
\_______________________________________________________/
\_______________________________________/
Jika n = 2
pada contoh yang sama:
_____________________________________________________
/ \
| _____________________________________________ |
| | | |
| | Welcome to ROBCO Industries (TM) Termlink | |
| | Password Required | |
| | Attempts Remaining: X X | | # N = 2 drives these X's.
| | | |
| | 0x01 $?_/%$ENACT||"} | 0x0D TYS"_'$\#|^%&{} | |
| | 0x02 }:!*@{/_<"[]#>; | 0x0E #{!"^&\]'|}_[$% | |
| | 0x03 $%&'()*+/:;<\_' | 0x0F }|[(%SMELL/_$@( | |
| | 0x04 ^SMART(!@$*'^_@ | 0x10 []_#!"{|}'%$\&^ | |
| | 0x05 (*@#%}*(!%)^(_! | 0x11 %$}[!\#'^&_]{|" | |
| | 0x06 $%&'()*+/:;<_@) | 0x12 \SWORE|%'_!}\^" | |
| | 0x07 "/')=*%!&>#<:$+ | 0x13 ^{['&$|!_]%\"#} | |
| | 0x08 ;'*$&"(<%!#)RAC | 0x14 ']!|^#[$"_\}&{% | |
| | 0x09 ES:($&';%#+"<*/ | 0x15 @)($!CARTS*!@$_ | |
| | 0x0A ;'*$&"(<%!#)/+: | 0x16 !#%${"'}&[]^|_\ | |
| | 0x0B |'_!}$\%["#^{&] | 0x17 ]"_#$&}^%[{|\'! | |
| | 0x0C #{!"^&\]'|}_[PI | 0x18 _![&#{$%\^'|}"] | | # Notice how PITYS wrapped.
| |_____________________________________________| |
| |
\_______________________________________________________/
\_______________________________________/
Contoh-contoh ini dibuat secara manual, sehingga distribusinya tidak acak, maaf.
Ini adalah kode-golf , byte-count terendah akan menjadi pemenang yang diterima. Saya akan memberi hadiah ini setelah 3 hari jika tidak ada jawaban yang diajukan dengan total 250 REP.
sumber
NAMES
maksud dari poin kedua? " Semua kata sandi dapat diperkirakan memiliki panjang yang sama, meskipun ini tidak masalah. " Atau " Semua kata sandi di saya harus memiliki panjang yang sama. "? Mungkin saja saya menjadi buta (lagi!) Tapi saya tidak melihatRACES
di salah satu output - haruskah kita menganggap ini berarti ada kemungkinan password tidak digunakan? ApakahMath.random
(dan setara) cukup acak untuk keperluan tantangan ini?Jawaban:
JavaScript (ES8),
575568564 byteDisimpan 3 byte berkat @Shaggy
Mengambil input dalam sintaks currying
(r)(a)
, di mana r adalah jumlah upaya yang tersisa dan a adalah array kata sandi.Penyorot sintaks dinonaktifkan dengan sengaja. Tidak ada petunjuk apa yang harus dilakukan dengan itu.
Demo
Tampilkan cuplikan kode
sumber
Attempts Remaining:${" X".repeat(r).padEnd(8)}
?Welcome to ROBCO Industries (TM) Termlink'!Password Required#}'!Attempts Remaining:
oof ... Saya harus diparafrasekan untuk menyimpan byte langs non-golf.SOGL V0.12 , 225 byte
Coba Di Sini!
Mengharapkan input array pada stack dan jumlah input dan input, sehingga
→"
ditambahkan dalam program online untuk kemudahan penggunaan.sumber
Perl 5 ,
588560 + 1 (-a) =589561 bytePotong 28 byte dengan saran yang ditunjukkan Dom
Cobalah online!
Sebelumnya:
Cobalah online!
Input ada pada satu baris, spasi terpisah: pertama string, lalu nomor
Bagaimana?
sumber
.
tidak digunakan sebagai titik desimal. Juga untuk mendapatkan tanda baca Anda dapat menggunakan sesuatu seperti(grep/[^\w,.`-]|_/,map{chr}33..125)
dan Anda tidak perlu memanggilint
indeks array! Mengubahwhile
loop ke postfix dan menggunakan&&
bukannyaif
harus menyimpan beberapa juga. Saat Anda membangun$s
, jika Anda memiliki$s.=
di dalam peta alih-alih menggunakanjoin
beberapa tetes lagi. Semoga itu bisa membantu!Python 3 , 585 byte
Cobalah online!
-70 byte terima kasih kepada Jonathan Allan
-9 byte terima kasih pada diriku sendiri (akhirnya!)
-72 byte terima kasih kepada notjagan
sumber
JavaScript (ES8), 639 byte
Label heks berada dalam huruf kecil; jika huruf besar diperlukan, itu akan menjadi tambahan 14 byte untuk
.toUpperCase()
.Cuplikan Tes
Lebih baik dilihat pada CodePen .
sumber
repeat
.