Tantangan
Diberikan string input (atau array) yang terdiri dari <
dan >
, output urutan (array atau string) bilangan bulat sehingga:
- semua operator benar ketika diterapkan secara berurutan antara angka berurutan dalam output
- semua bilangan bulat positif (1 atau lebih besar)
- jumlah bilangan bulat adalah sekecil mungkin secara matematis
Input dapat bervariasi untuk mencocokkan "lebih besar dari" dan "kurang dari" dalam bahasa yang Anda pilih.
Sebagai output alternatif, cukup tentukan jumlah angka dalam output. Nyatakan versi mana yang Anda selesaikan dalam judul Jawaban Anda.
Pengecualian dan aturan biasa berlaku, byte terkecil menang.
Anda dapat mengasumsikan bahwa string input tidak akan pernah mengarah ke overflow integer dalam bahasa Anda, jika itu membantu.
Contohnya
>
memberikan2 1
jumlah yang untuk3
>>>
memberikan4 3 2 1
jumlah yang untuk10
><
memberikan2 1 2
jumlah yang untuk5
memberikan
1
jumlah yang untuk1
>>>>>>>>>
memberikan10 9 8 7 6 5 4 3 2 1
jumlah yang untuk55
>><<>><>>>
memberikan3 2 1 2 3 2 1 4 3 2 1
jumlah yang untuk24
><>><>><>
memberikan2 1 3 2 1 3 2 1 2 1
jumlah yang untuk18
<<<<>
memberikan1 2 3 4 5 1
jumlah yang untuk16
<<<<><<>
memberikan1 2 3 4 5 1 2 3 1
jumlah yang untuk22
>><<
memberikan3 2 1 2 3
jumlah yang untuk11
code-golf
sequence
mathematics
simonalexander2005
sumber
sumber
>
dan<
?><>
Jawaban:
Jelly , 19 byte
Cobalah online!
Nilai setiap angka adalah maks ( jumlah
>
segera di sebelah kanannya , jumlah<
segera di sebelah kiri ) + 1 .Kalau tidak...
Cobalah online!
sumber
> <> ,
4038 byteCobalah online!
Bahasa yang tepat. Untuk referensi
><>
sendiri menghasilkan 2,1,2,1.Bagaimana itu bekerja:
sumber
Python 3, 93 byte
Cobalah online!
Tidak terurai:
sumber
Haskell , 119 byte
Cobalah online!
Penjelasan
Idenya di sini adalah bahwa kita memiliki run dari
>
s atau<
s, yang masing-masing peta ke rentang naik dan turun. Jadi kami gunakangroup
untuk membagi string menjadi grup karakter yang berurutan. Tugas kita adalah untuk kemudian menyatukan ini dengan cara yang tepat.Ketika kita memiliki
<>
kita ingin menjahit dua daftar bersama-sama mengambil nilai akhir yang lebih besar misalnyaterpecah
dipetakan ke rentang
Kemudian ketika kita menjahit kita jatuhkan
3
karena itu lebih kecil (3
tidak lebih besar dari7
).Ketika kita memiliki
><
kita melakukan yang sebaliknya, kita menjatuhkan nilai yang lebih besar.Kode aktual mencapai ini dengan membuat operator
%
. Definisi%
ini cukup rumit, tetapi pada dasarnya terbaca dari kiri ke kanan melacak berapa banyak karakter berturut-turut yang sama. Apakah ini di sebelah kiri memiliki nilai operator. Ketika kami mencapai tempat di mana karakter berubah kami melakukan jahitan seperti yang saya jelaskan.sumber
(2%)
?%
dengan2
sebagai argumen pertama.main
implementasi penuh ?Retina 0.8.2 , 36 byte
Cobalah online! Tautan termasuk kasus uji. Penjelasan:
Masukkan
1
s sebelum, di antara dan setelah<
s dan>
s.Bilangan bulat berulang kali sampai semua perbandingan terpenuhi.
Jumlah bilangan bulat dan konversikan ke desimal.
sumber
Java 10,
198181 byteCobalah online.
Penjelasan:
sumber
Haskell , 87 byte
Cobalah online!
Port jawaban Jelly saya.
sumber
Stax , 21 byte
Jalankan dan debug itu
Ini bekerja dengan run-length encoding input, dan kemudian menyatukan rentang yang dihasilkan secara bersamaan. Dibongkar, tidak diserang, dan dikomentari, sepertinya ini.
Jalankan yang ini
sumber
Perl 5
-p
, 53 byteCobalah online!
sumber
Merah , 185 byte
Setelah penjelasan user202729 ...
Cobalah online!
sumber