Tugas Anda adalah mengambil elemen input n
dan output n
dari Rummy Sequence, urutan yang saya buat (melihat OEIS tidak akan membantu Anda).
Definisi
Setiap elemen dari Rummy Sequence adalah seperangkat nilai-nilai yang benar atau salah. Mis [true, false]
. : .
Langkah-langkah untuk menghasilkan anggota Rummy Sequence cukup sederhana:
- Mulailah dengan indeks pertama,
[]
(ini elemen 0). - Atur falsey paling kiri ke truey. Jika tidak ada kesalahan yang harus diubah, maka tambah panjang daftar dengan 1 dan atur semua anggota daftar baru ke falsey.
- Ulangi langkah 2 hingga mencapai elemen
n
.
Contoh
Mari kita definisikan fungsi kita sebagai rummy(int n)
(hal-hal dalam {}
adalah langkah yang diambil untuk mendapatkan jawabannya):
>>> rummy(5)
{[]}
{[false]}
{[true]}
{[false, false]}
{[true, false]}
[true, true]
Aturan
- Celah standar berlaku.
- Harus bekerja untuk input 0 melalui batas numerik bahasa Anda.
- Anda dapat menampilkan dengan cara apa pun yang Anda inginkan, asalkan jelas bahwa output adalah seperangkat kebenaran / kesalahan.
Hal sepele
Saya menyebutnya "Urutan Rummy" karena, mulai dari indeks 2, ia mendefinisikan set yang Anda butuhkan untuk berbaring di setiap putaran Progressive Rummy , di mana falsey adalah sebuah buku dan kebenaran adalah sebuah lari.
Uji Kasus
>>> rummy(0)
[]
>>> rummy(1)
[false]
>>> rummy(6)
[false, false, false]
>>> rummy(20)
[true, true, true, true, true]
>>> rummy(1000)
[true, true, true, true, true, true, true, true, true, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false]
code-golf
math
array-manipulation
Addison Crump
sumber
sumber
1
untuk11
, Anda mendapatkan000
bukan100
. ; P1*0*
.Jawaban:
JavaScript ES6,
949272706664 byteDisimpan 6 byte berkat Neil!
Saya tidak berpikir ini bisa golf lagi. Setidaknya dengan persamaan.
Penjelasan
Mereka adalah dua persamaan utama (
n
input):Ini akan memberikan ukuran total array output perlu. Dalam program saya saya menggunakan
>>1
bukannya(...)/2
ini sama dengan bit pertama dalam biner memiliki nilai 2. Pergeseran itu akan menghasilkan difloor(.../2)
Ini adalah jumlah yang
true
akan ada.a
adalah hasil dari ekspresi sebelumnya.Inilah yang dilakukan oleh sintaks:
Kode ini menghasilkan array dengan kisaran
[0, n)
dalam jawaban inin
adalah persamaan pertama..map((_,l)=>l<n)
ini akan berulang melalui rentang di atas,l
adalah variabel yang berisi item saat ini dalam kisaran. Jika item kurang dari jumlah trues mereka (ditentukan oleh persamaan kedua), maka itu akan kembalitrue
, yang lainfalse
.sumber
>>1
sebagai ganti/2|0
. Gunakan(_,l)=>
sebagai ganti.keys()
.Array.from()
?, mengisi, atau sesuatu yang lain?[...Array(a)].map((_,l)=>)
yang saya percaya sedikit lebih pendek, tapi bagus untuk menghapus beberapa()
ketika beralih ke>>1
, saya belum melihat itu!a*-~a/2
; Saya tidak tahu mengapa saya tidak memikirkannya sebelumnya.Python, 51 byte
Output daftar 1 dan 0.
sumber
Pyth, 8 byte
Cobalah online: Demonstrasi atau Test Suite
Ini lambat secara eksponensial.
Penjelasan:
sumber
Jelly ,
1311 byteKode tidak berfungsi dalam versi terbaru Jelly sebelum tantangan diposting, tetapi berhasil dalam versi ini , yang ada sebelum tantangan.
Indeks berbasis 1. Cobalah online! (perlu beberapa detik) atau verifikasi beberapa input sekaligus .
Bagaimana itu bekerja
sumber
05AB1E, 27 byte
Akan melihat apakah saya dapat golf lagi dan menambahkan penjelasan di pagi hari.
Cobalah online
sumber
Java,
117110 bytemenciptakan tipe boolean saya sendiri, yang memungkinkan saya untuk menyimpan 7bytes
sumber
Python 2,
6963 byteUji di Ideone .
sumber
Python 2, 61 byte
Memecahkan untuk n = j · (j + 1) / 2 . Input diambil dari stdin.
Contoh Penggunaan
Demo .
sumber
APL (Dyalog Extended) , 21 byte SBCS
Cobalah online!
sumber