Satu lagi tantangan Jimmy oleh ayah asalnya. Lihat tantangan-tantangan indah lainnya .
Seperti yang Anda semua tahu, baru-baru ini kami telah melihat tantangan terkait dengan Jimmy di platform. Sekarang, Jimmy adalah seorang akrobat seperti yang saya sebutkan sebelumnya, dan dia punya trik-trik lain.
Salah satu trik ini tergantung pada tali. Berikut ini contoh tali yang bisa digantung oleh Jimmy:
||
||
||
||
||
||
Ketika Jimmy tergantung pada seutas tali, terlihat seperti ini:
||
||
/o\
||
||
||
Dia dapat menggantung di sebelah kiri atau kanan tali, jadi ini:
||
||
||
/o\
||
||
juga valid. Tetapi ia tidak dapat digantung hanya oleh satu bagian tubuh, jadi hal seperti ini:
||
||
||
/o\|
||
||
tidak valid. Perhatikan bahwa ketika ia digantung oleh satu bagian tubuh, separuh tali yang lain terlihat karena Jimmy tidak menutupinya.
Juga, Jimmy tidak suka menggantung di bagian bawah tali - itu membuatnya takut - jadi ini:
||
||
||
||
||
/o\
tidak valid.
Tantangan
Ambil input dari situasi Jimmy seperti yang di atas, dan hasilkan apakah Jimmy akan bertahan atau tidak melalui nilai yang benar atau salah.
Spesifikasinya
Tulis program yang membutuhkan input. Ini bisa melalui fungsi atau metode input lain yang sesuai.
- Input harus berupa adegan dari satu Jimmy dan tali seperti yang dicontohkan di atas.
Program harus menampilkan nilai yang benar atau salah ke konsol berdasarkan pada apakah Jimmy dapat berpegangan pada tali atau apakah ia akan jatuh dari tali, masing-masing.
Kriteria untuk Jimmy bisa bertahan:
Dua bagian tubuhnya ada di tali.
Dia tidak berada di bawah tali.
Dia tidak mengambang di udara.
Anda dapat mengasumsikan talinya akan lurus, terdiri dari
||
bagian - bagian, dan tingginya akan lebih dari satu karakter.Anda dapat mengasumsikan satu tali utuh dan satu Jimmy tunggal akan hadir dalam adegan Anda, tidak lebih dan tidak kurang.
Anda dapat mengasumsikan tidak akan ada garis baru di bagian bawah tali.
Anda harus menutupi sejumlah ruang depan atau belakang sebelum dan sesudah tali.
Uji kasus
||
||
|| TRUTHY
/o\
||
||
||
||
/o\| FALSY
||
||
||
/o\ TRUTHY
||
||
/o\ FALSY
/o\
|| TRUTHY
||
||
/o\ || FALSY
||
||
Mencetak gol
Ini adalah kode-golf , jadi skor terendah dalam byte menang setelah sekitar satu minggu.
Papan peringkat
Anda dapat melihat papan peringkat untuk posting ini dengan memperluas widget / snippet di bawah ini. Agar posting Anda dimasukkan dalam peringkat, Anda perlu tajuk ( # header text
) dengan info berikut:
Nama bahasa (akhiri dengan tanda koma
,
atau tanda hubung-
), diikuti oleh ...Jumlah byte, sebagai angka terakhir yang muncul di header Anda.
Misalnya, JavaScript (ES6), 72 bytes
valid, tetapi Fortran, 143 bytes (8-bit)
tidak valid karena jumlah byte bukan angka terakhir di header (jawaban Anda akan dikenali sebagai 8 byte - jangan manfaatkan ini).
<!-- Run the snippet to see the leaderboard. Report any bugs to @ozewski on Github. --> <iframe src="https://ozewski.github.io/ppcg-leaderboard/?id=187759" width="100%" height="100%" style="border:none;">Oops, your browser is too old to view this content! Please upgrade to a newer version of your browser that supports HTML5.</iframe><style>html,body{margin:0;padding:0;height:100%;overflow:hidden}</style>
Jawaban:
Japt , 5 byte
Saya pikir ini benar; Saya telah bekerja selama 16 jam terus menerus dan nyaris tidak tahu nama saya sendiri sehingga saya tidak akan terkejut jika tidak!
Cobalah
sumber
Python 2 atau 3 ,
3330 byte-3 Terima kasih kepada Maxwell
Fungsi yang tidak disebutkan namanya menerima daftar garis
Cobalah online!
Bagaimana?
Perlu ada bagian tali yang dikaburkan oleh Jimmy yang bukan bagian bawah.
sumber
lambda l:'o'in map(max,l[:-1])
Python 2, 28 byte
Cobalah online!
Bagaimana cara kerjanya? Dibutuhkan input sebagai daftar string, dan zip bergabung dengan string. Jimmy tetap di tali jika ada "|" di bawah "o", jadi kode ini bergabung dengan semua baris dan memeriksa apakah ada "o" diikuti oleh "|".
Kode beranotasi:
(Jawaban Lama) Python 2 atau 3, 39 byte
Fungsi yang mengambil input sebagai daftar string, masing-masing string menjadi garis yang berbeda.
-11 byte terima kasih kepada xnor! -2 byte terima kasih kepada Jonathan Allan!
Cobalah online! (Jika Anda ingin mencoba lebih banyak kasus uji, cukup beri tanda "." Setelah setiap rangkaian baris di kotak input.)
Bagaimana cara kerjanya? Nah, jika Jimmy sepenuhnya di atas tali, maka garis itu tidak akan memiliki "|" karakter. Oleh karena itu, kita dapat memeriksa setiap baris, dan jika kita menemukannya tanpa "|" karakter, maka kita tahu bahwa Jimmy dapat tetap di tali. Namun, Jimmy tidak bisa bertahan di bagian bawah tali; oleh karena itu, kami tidak memasukkan baris terakhir dalam cek kami. Jika baris terakhir hanyalah bagian lain dari tali, maka tidak masalah, karena kita masih akan menemukan baris yang valid lebih tinggi, tetapi jika baris terakhir adalah dengan Jimmy, maka tidak akan menemukan garis tanpa "|" di mana saja, dan akan mengembalikan False.
sumber
lambda x:1-all("|"in i for i in x[:-1])
Jelly ,
9 76 byteTautan monadik yang menerima daftar garis
Cobalah online!
Bagaimana?
Perlu ada bagian tali yang dikaburkan oleh Jimmy yang bukan bagian bawah.
sumber
Note that all other characters are [less than '|']
"?brainfuck,
7964 byteCobalah online!
Menghasilkan byte 0x01 untuk truey dan tidak ada untuk falsy.
sumber
Grime , 5 byte
Cobalah online!
Alat yang tepat untuk pekerjaan itu.
sumber
Stax , 6 byte
Jalankan dan debug itu
Transpos input, lalu cari "o |".
sumber
05AB1E , 5 byte
Cobalah online!
Satu-satunya karakter yang dapat muncul dalam input adalah
\o/ |
, dengan masing-masing codepoints 92, 111, 47, 32, 124 (tidak ada baris baru, karena kami memilih untuk mengambil input sebagai larik garis). Hasil yang mungkin dengan memodulasi dua angka-angka ini adalah 0, 13, 15, 17, 19, 28, 30, 32, 45, 47, 92, 111. 111 adalah yang terbesar di antara mereka, dan juga satu-satunya yang berakhir dengan 1 , jadi kode akan menampilkan kebenaran jika dan hanya jika 111 ada dalam daftar (hanya 1 yang benar di 05AB1E). 111 adalah 111 (o
)% 124 (|
), dan hanya terjadi jika ada dio
atas|
dalam input.sumber
APL (Dyalog Unicode) , 8 byte SBCS
Fungsi awalan diam-diam anonim, mengambil matriks karakter sebagai argumen.
Cobalah online!
⍉
mengubah urutan'o|'⍷
topeng untuk di mana-manao
segera diikuti oleh|
1∊
Apakah salah satu anggotanya?sumber
APL Dyalog Diperpanjang,
1413119 byteCobalah online!
sumber
3∊¯1+/⍤↓<
JavaScript,
3933 byteTerima kasih @Daniil Tutubalin untuk bermain golf 2 byte
Ini cocok dengan garis mana pun yang bukan garis di mana lengan kirinya muncul dan tidak ada tali yang muncul.
Cobalah online!
sumber
/^ *.o. *\n/
?/// ,
5350 byteCobalah online!
Karena tidak ada cara lain untuk mengambil input di ///, kode-keras:
Penjelasan:
Pendekatan umum adalah untuk menggantikan Jimmy dengan 1 unary, lalu singkirkan dia dari semua situasi di mana dia dalam bahaya. Jika dia selamat, dia dikeluarkan. Jika tidak, maka tidak ada. The
~
dalam kode adalah pengganti//
, yang memungkinkan kode yang akan disingkat dengan 3 byte sini. Mereka dihilangkan dari penjelasan.Cobalah online!
sumber
Ruby 2.5.5, 22 byte
Mengharapkan array garis. Membutuhkan minimal versi 2.5.5 karena ini adalah saat
Array#all?(pattern)
ditambahkan.Karena kendala bahwa input akan selalu menjadi adegan yang valid dari Jimmy dan seutas tali, maka intinya adalah apakah salah satu garis sebelum garis terakhir memiliki tali yang dikaburkan.
sumber
Kotlin ,
9384 byteCobalah online!
sumber
JavaScript,
3837 byteCobalah online!
sumber
Retina , 9 byte
Cobalah online!
Sekarang, saya belum pernah memprogram di Retina sebelumnya, tetapi sejauh yang saya tahu ini bisa berhasil. Ini adalah ekspresi reguler yang menemukan string berisi (1) awal input, (2) no "|" karakter, dan (3) baris baru.
Orang yang lebih terbiasa dengan ekspresi reguler atau Retina didorong untuk menawarkan saran. -2 byte terima kasih kepada Neil!
sumber
\n
karena baris baru bukan|
dan sehingga akan tetap cocok, dan yang terakhir^
cukup untuk memastikan bahwa Anda benar-benar cocok dengan baris baru. 2) Gunakan pilcrow¶
sebagai ganti\n
dan hapus trailing^
(karena itu selalu benar setelah baris baru dalam mode multiline).Perl 5
-p
, 26 byteCobalah online!
sumber
Befunge-98 (PyFunge) ,
2624 byteCobalah online!
Keluar dengan kode kembali 3 jika
\n
ditemui dan baris terakhir berisi 3 karakter non-spasi, jika tidak keluar dengan kode pengembalian 0 pada EOF. Dengan demikian, ini bergantung pada baris terakhir yang tidak mengandung baris baru.Dibedah
sumber
05AB1E (warisan) , 6 byte
Port of @Shaggy 's Japt answer .
Masukan sebagai daftar baris.
Cobalah online.
Penjelasan:
sumber
Elm 0,19, 68 byte
Mengambil input sebagai daftar baris. Mengabaikan baris terakhir, ia memeriksa apakah ada yang tidak
'|'
di dalamnya - menyiratkan tali sepenuhnya ditutupi oleh Jimmy.Verifikasi semua kasus uji di sini .
sumber
PowerShell , 26 byte
Jawaban Port of Maxwell untuk Retina .
Cobalah online!
Penjelasan:
true
jika:|
false
jika tidak.sumber
Pyth , 9 byte
Suite uji!
sumber
Pyret, 79 byte
Mengharapkan array garis sebagai string. Membuat salinan di
link(0,l)
mana semua baris digeser ke bawah oleh satu. Melewati setiap barisr
dan din
mana n adalah baris di bawah r. Periksa apakah tubuh Jimmy"o"
berada pada posisi tertentu, maka baris di bawahnya memiliki pipa di sana (mis. Jimmy tergantung di tali dan tidak di bagian bawah).sumber