Diadaptasi dari teka-teki FiveThirtyEight ini .
Latar Belakang
Periksa urutan tak terbatas berikut:
3 3 3 2 3 3 3 2 3 3 3 2 3 3 2 3 3 3 2 ...
Katakanlah urutannya adalah 1-diindeks. The i
Jumlah th di urutan menentukan berapa banyak 3
s ada sebelum i
th 2
dan mengikuti setiap sebelumnya 2
s. Jadi sejak urutan dimulai dengan 3
urutan harus dimulai 3 3 3 2
dan karena ada tiga 3
s di awal urutan, maka urutan 3 3 3 2
harus diulang tiga kali. Setelah itu Anda mencapai 3 3 2
karena angka keempat dalam urutan tersebut 2
.
Teka-teki FiveThirtyEight meminta batas rasio tiga hingga dua (yang saya tidak akan rusak di sini) tetapi Anda juga dapat bertanya apa rasio kumulatif setelah indeks i
. Misalnya rasio at i=4
is 3/1 = 3
dan at i=15
it 11/4 = 2.75
.
Mari kita menjadi umum
Angka yang diberikan n
dan k
kita dapat membuat urutan yang sama yang dimulai dengan n
dan seperti urutan asli yang dijelaskan angka di indeks i
menentukan berapa banyak yang n
muncul sebelum i
th k
dan mengikuti yang sebelumnya k
.
Contoh:
n=2, k=5
memberi urutan 2 2 5 2 2 5 2 2 2 2 2 5 2 2 5 ...
n=3, k=0
memberi 3 3 3 0 3 3 3 0 3 3 3 0 0 3 3 3 0 ...
n=1, k=3
memberi 1 3 1 1 1 3 1 3 1 3 1 3 1 1 1 3 1 ...
Tantangan
Tulis fungsi / program dan dengan itu lakukan hal berikut. Ambil sebagai masukan:
- bilangan bulat positif
n
- bilangan bulat tidak negatif
k ≠ n
- bilangan bulat positif
i > n
Dua input pertama n
dan k
tentukan urutan seperti dijelaskan di atas dan i
merupakan indeks. Saya menggunakan pengindeksan 1 dalam contoh, tetapi Anda memiliki kebebasan untuk menggunakan pengindeksan 0 atau 1. Jika 0-diindeks maka batasan pada i
adalah i ≥ n
.
Dengan tiga angka yang dihasilkan, rasio n
s ke k
s dalam urutan hingga dan termasuk angka pada indeks i
. Format output dapat berupa nilai desimal dengan setidaknya 5 digit presisi atau nilai yang tepat sebagai rasio seperti 3524/837
atau 3524:837
.
Dalam bentuk desimal, digit terakhir dapat dibulatkan sesuka Anda. Nol trailing dan spasi putih diizinkan.
Dalam salah satu bentuk string, kedua angka harus dinormalisasi sehingga keduanya merupakan koprime. Misalnya jika rasionya 22/4, 11/2
dan 11:2
dapat diterima tetapi 22/4
tidak.
Contohnya
n k i output
2 4 15 2.75 or 11/4
6 0 666 5.1101 or 557:109
50 89 64 63 or 63:1
3 2 1000 2.7453 or 733/267
9 12 345 9.4545 or 104/11
Ini adalah kode golf per bahasa, jadi kode terpendek dalam setiap bahasa adalah pemenangnya.
/
atau:
hanya menambahkan komplikasi yang tidak perlu pada tantangan.Jawaban:
Sekam , 16 byte
Cobalah online!
Mengambil input dalam urutan yang sama dengan kasus uji. Menghasilkan angka yang rasional. Saya merasa seperti ini memiliki terlalu banyak superskrip, tetapi saya tidak tahu bagaimana cara menyingkirkannya ...
Penjelasan
sumber
Python 3 ,
94928987 byteCobalah online!
Kredit
sumber
.count(n)
?Jelly , 22 byte
Cobalah online!
Program lengkap. Mengambil argumen
n
,k
,i
.Ada bug yang membuat ini tidak perlu lebih lama dengan 1 byte.
sumber
`
membuatnya berfungsi. Oh, dan perbedaan jawaban Anda adalah saya lupa menerapkan golf yang saya temukan dalam bahasa lain> _>Jelly ,
2516 byte-9 byte ~ 50% disebabkan oleh Erik the Outgolfer's Jelly answer (1. menggunakan kunci new-ish cepat
ƙ
bahkan dengan bug pada penerjemah yang saat ini berharga satu byte; 2. menggunakan pengulangan yang dipetakan untuk menghindari penghitungan dan pengindeksan ke dalam urutan saat ini .) Pergi beri dia kredit!Sebuah program penuh mengambil tiga argumen:
n
,k
,i
yang mencetak hasilnya.Cobalah online!
Bagaimana?
Misalnya dijalankan dengan input
n=2
,k=3
,i=30
:sumber
Mathematica, 85 byte
Cobalah online!
sumber
APL (Dyalog Unicode) ,
12670 byteCobalah online!
Terima kasih kepada @ Adám karena telah menghapus 56 byte dari jawaban ini.
Ini adalah Tradfn niladic ( trad itional f unctio n ) mengambil 1 input, yang merupakan daftar 3 elemen.
⎕PP←5
tidak ditambahkan ke jumlah byte karena itu hanya digunakan untuk membatasi P etak P recision ke 5 digit.∇f
dan∇
tidak ditambahkan ke jumlah byte karena mereka bukan bagian dari kode, hanya pembatas untuk tradfn.Bagaimana itu bekerja:
sumber
R , 88 byte
Cobalah online!
sumber
for
badan loop karena hanya ada satu pernyataan.Cepat , 152 byte
Apakah lebih pendek dari Jawa?
Penjelasan
sumber
Ruby ,
777170 byteCobalah online!
Mengembalikan Rasional, yang keduanya beroperasi sebagai angka dan merangkai ke fraksi tereduksi yang tepat.
sumber
Pyth , 24 byte
Suite uji.
Titik tetap di
[n]
bawah fungsi array tertentu.sumber
Zephyr , 284 byte
Mengambil tiga angka dari stdin pada tiga baris terpisah. Menghasilkan rasio yang tepat seperti
104/11
atau63
.Tidak disatukan
sumber