Tugas
Dalam tantangan ini, input Anda adalah daftar bilangan bulat positif yang tidak kosong, diberikan dalam format asli bahasa Anda. Output Anda adalah daftar yang sama, dalam format yang sama, dengan beberapa elemen dihapus. Anda harus menghapus setiap kemunculan 1
, setiap kemunculan kedua 2
, setiap kemunculan ketiga 3
, dan sebagainya. Secara umum, untuk setiap bilangan bulat positif N
, Anda harus menghapus setiap N
kemunculan dari N
daftar, dimulai dengan N
kemunculan th.
Contoh
Pertimbangkan daftar input
[3,2,6,1,1,6,2,3,2,6,6,6,6,1,6,6,3,3,7,2]
Pertama, kami menghapus setiap kejadian dari 1
:
[3,2,6, 6,2,3,2,6,6,6,6, 6,6,3,3,7,2]
Kemudian setiap detik terjadi 2
:
[3,2,6, 6, 3,2,6,6,6,6, 6,6,3,3,7 ]
Kemudian setiap kejadian ketiga 3
:
[3,2,6, 6, 3,2,6,6,6,6, 6,6, 3,7 ]
Angka-angka 4
dan 5
tidak terjadi dalam input, sehingga dapat dilewati. Selanjutnya, kami menghapus setiap kejadian keenam 6
:
[3,2,6, 6, 3,2,6,6,6, 6,6, 3,7 ]
Hanya ada satu kejadian 7
, sehingga bisa dilewati juga. Dengan demikian output yang benar adalah
[3,2,6,6,3,2,6,6,6,6,6,3,7]
Aturan dan penilaian
Anda dapat menulis program lengkap atau fungsi. Hitungan byte terendah menang, dan celah standar tidak diizinkan.
Uji kasus
[1] -> []
[2] -> [2]
[1,1,1] -> []
[2,2,2] -> [2,2]
[1,1,2,2,2,3,3,3,3] -> [2,2,3,3,3]
[1,2,3,1,2,3,1,2,3,1,2,3] -> [2,3,3,2,3]
[3,2,6,1,1,6,2,3,2,6,6,6,6,1,6,6,3,3,7,2] -> [3,2,6,6,3,2,6,6,6,6,6,3,7]
[5,4,5,4,3,5,4,5,4,5,4,3,5,4,5,3,3,3,4,5,4,5,4,5,4,3,3,3,5,4] -> [5,4,5,4,3,5,4,5,4,3,5,4,5,3,3,4,5,5,4,4,3,3,5,4]
[6,4,5,8,2,9,3,1,8,5,3,5,5,6,3,5,1,2,3,9,3,5,8,7,5,9,1,3,4,8,2,3,4,7,8,5,8,5,3,1] -> [6,4,5,8,2,9,3,8,5,3,5,5,6,3,9,3,5,8,7,5,9,4,8,2,3,4,7,8,5,8,5,3]
[4,4,9,12,9,4,4,4,12,9,12,9,12,4,12,4,4,9,4,9,12,4,12,4,4,12,4,4,9,12,9,12,9,4,9,12,4,9,12,9,12,9,4,9,12,12,4,4,12,4] -> [4,4,9,12,9,4,4,12,9,12,9,12,4,12,4,9,4,9,12,4,12,4,12,4,4,9,12,9,12,4,9,12,9,9,12,9,4,9,12,12,4,4,12]
[2,2,11,11,11,11,6,2,2,6,6,2,2,2,2,6,11,6,11,11,2,11,2,6,6,11,2,11,6,2,6,6,6,6,6,11,2,11,11,6,6,6,11,6,2,6,2,6,6,2,11,2,2,11,11,11,11,2,6,2] -> [2,11,11,11,11,6,2,6,6,2,2,6,11,6,11,11,2,11,6,11,2,11,6,6,6,6,6,2,11,11,6,6,6,11,6,2,6,6,11,2,11,11,11,11,2,6]
[20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102] -> [20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,21,22,100,101,102,20,22,100,101,102,20,21,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,21,22,100,101,102,20,21,22,100,101,102,20,22,100,101,102,20,21,22,100,101,102,20,21,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,21,22,101,102,20,21,22,100,102,20,21,22,100,101,20,21,22,100,101,102,20,21,22,100,101,102,20,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,100,101,102]
Papan peringkat
Berikut ini adalah Stack Snippet untuk menghasilkan leaderboard biasa dan gambaran umum pemenang berdasarkan bahasa. Untuk memastikan bahwa jawaban Anda muncul, silakan mulai jawaban Anda dengan tajuk utama, menggunakan templat Penurunan harga berikut:
## Language Name, N bytes
di mana N
ukuran kiriman Anda. Jika Anda meningkatkan skor Anda, Anda bisa menyimpan skor lama di headline, dengan mencoretnya. Contohnya:
## Ruby, <s>104</s> <s>101</s> 96 bytes
Jika Anda ingin memasukkan beberapa angka di tajuk Anda, pastikan bahwa skor sebenarnya adalah angka terakhir di tajuk:
## Perl, 43 + 2 (-p flag) = 45 bytes
Anda juga dapat membuat tautan nama bahasa yang kemudian akan muncul di cuplikan papan peringkat:
## [><>](http://esolangs.org/wiki/Fish), 121 bytes
=
membandingkan bilangan bulat. Misalnya,[3,2,1]=;\
membandingkan3
dengan unsur[3]
,2
dengan orang-orang dari[3, 2]
dan1
dengan orang-orang[3, 2, 1]
, memberikan[1, [0, 1], [0, 0, 1]]
.awk, 10 byte
Input diharapkan pada STDIN, satu nomor per baris.
Penjelasan
Menyimpan penghitung untuk setiap angka dalam array asosiatif, mencetak hanya jika modulo nilai penghitung
n
tidak nol. Pencetakan tersirat. Versi panjang:sumber
Pyth,
181514109 byteSaya pikir ini adalah kode pertama yang saya tulis yang memiliki lima referensi variabel berturut-turut dalam sembilan byte.
Saya berharap solusi manipulasi array (
u.DG%HgxHGH{QQ
14 byte) tidak terlalu lama.Coba di sini .
sumber
Python, 57 byte
sumber
Perl 6 , 28 byte
Pemakaian:
Periksa kembali apakah elemen yang benar sedang dibuang
sumber
Serius,
2217 byteHex Dump:
Cobalah secara Online
Penjelasan:
sumber
JavaScript ES6, 34 byte
Ternyata sama dengan algoritma Perl Brad.
Sunting: Disimpan 2 byte berkat @ edc65.
sumber
a=>a.filter(v=>f[v]=-~f[v]%v,f=[])
Mathematica,
403836 byteIni adalah fungsi tanpa nama untuk mengambil dan mengembalikan a
List
. Ini mendefinisikan fungsi bernamaf
ketika dieksekusi (untuk melacak angka-angka), tetapi mengatur ulang definisi yang relevan darif
sebelumnya.Penjelasan
Cara fungsi (atau definisi fungsi) bekerja di Mathematica sangat kuat. Seperti dalam Haskell (misalnya), fungsi tidak hanya kelebihan beban dan didefinisikan untuk tipe tertentu, tetapi juga untuk nilai individu (atau pola argumen arbitrer, sebenarnya). Tetapi bahkan lebih kuat daripada Haskell dalam hal a) nilai-nilai ini dapat didefinisikan sebagai efek samping selama aliran kontrol dan b) nilai-nilai juga dapat didefinisikan ulang kapan saja. Itu berarti fungsi sebenarnya adalah tabel pencarian yang cukup kuat (yang secara opsional dapat menghitung nilai yang dicari daripada hanya menyimpannya).
Jika kita menghapus golfitude dari kode itu akan terlihat seperti ini:
Jadi pertama-tama, kita mengulang input dan mendefinisikan
f[x] = x
, untuk semua yang adax
di daftar.f
pada akhirnya akan digunakan untuk melacak seberapa sering setiap nomor telah muncul dalam daftar. Mengapa kita tidak diperhitungkan0
? Loop atas daftar adalah aMap
. Ekspresif[x] = y
kembaliy
(selain menyimpan definisi fungsi). Jadi dengan menyetelf[x]
kex
, peta akan mengevaluasi ke daftar input itu sendiri. Itu menghemat dua byte karena kita tidak perlu menyediakanlist
lagi secara eksplisitSelect
. Mulai darix
bukannya0
tidak memengaruhi perhitungan sama sekali karena kami hanya tertarikMod[f[x], x]
.(Biasanya kita bisa menggunakan sesuatu seperti
f[_] = 0
sebagai definisi mundur untuk menghindariMap
, tetapi kita tidak tahu apakah fungsi kita telah digunakan sebelumnya, yang akan membuat beberapa nilai sebelumnya didefinisikan yang akan mengacaukan penghitungan kita.)Kemudian
Select
filter daftar dengan hanya menyimpan elemen-elemen di mana fungsi yang tidak disebutkan namanya lewat sebagai argumen kedua menghasilkanTrue
. Fungsi itu pertama-tama menambah nilaif[x]
(di manax
elemen daftar saat ini), untuk menghitung kejadian, dan kemudian mengambil modulo hitungan yang dihasilkanx
. Kami ingin membuang semua elemen tempat ini menghasilkan0
.sumber
CJam, 17 byte
Kalahkan saja ... J? Tidak yakin apa harapan saya untuk tantangan ini, sungguh. Perhatikan bahwa itu
""
adalah representasi CJam dari array kosong.Cobalah online | Test suite (case terakhir terlalu panjang untuk permalink)
Penjelasan
sumber
JavaScript ES6, 55 byte
Penjelasan
sumber
J, 18 byte
Pemakaian:
Metode yang cukup mudah. Kami menghitung kemunculan angka hingga itu dan memilih nomor hanya jika nomor membagi hitungan.
Penjelasan lebih lanjut datang kemudian.
Cobalah online di sini.
sumber
PowerShell, 56 byte
Menggunakan helper-array-trick yang sama dengan jawaban Rainer P , yang saya kembangkan secara independen tetapi saya ternyata mendapatkan FGITW.
Mengambil input sebagai array dengan
param($a)
. Kami kemudian membuat array pembantu kami$b
sebagai array yang diisi-dengan-nol dengan menggunakan operator koma yang digabungkan dengan operator multiplikasi yang kelebihan beban. Ini menciptakan$b
harus sama@(0,0,0...0)
dengan$b.length
sama dengan angka maksimal dalam$a
.(Sumbat cepat untuk jawaban "Tunjukkan bahasa Anda" di tempat saya menjelaskan ini secara terperinci)
Berikutnya adalah output kami. Kami mengulang setiap elemen dari array input kami
$a|%{...}
dan setiap loop memeriksaif
pernyataan. Persyaratan pra-kenaikan nilai dalam array penolong kami yang sesuai dengan elemen saat ini, kemudian memeriksa apakah itu kelipatan elemen saat ini dengan operator modulo. Jika multipel,%
kemauan sama dengan0
yang falsey, sehinggaif
tidak mengeksekusi. Jika tidak, kami menampilkan elemen saat ini.Mengambil keuntungan dari typecasting implisit untuk menghemat pemformatan output. Jika fungsi atau program mengembalikan beberapa elemen, dan Anda menyimpan hasilnya ke variabel, PowerShell akan secara dinamis membuat variabel itu sebagai array. Contoh:
sumber
R,
110989992 BytesEdit bug perbaikan menulis ulang lengkap dengan test case 2/3 Edit 2 Simpan 7 byte berkat @ Alex-A
sumber
function(a){for(i in 1:max(a))for(j in seq_along(b<-which(a==i)))if(j%%i<1)a[b[j]]=0;a[a>0]}
MATL , 20 byte
Ini menggunakan rilis saat ini (10.2.1) dari bahasa / kompiler.
Cobalah online!
Penjelasan
sumber
R, 63 byte
sumber
C #, 224 byte
Kode ini menggunakan rekursi. Dengan
using
pernyataan itu 224 byte (160 untuk kode metode itu sendiri).Cobalah online.
sumber
for(int i=0,t=0;i<l.Count;i++)if(l[i]==n&&++t==n)l[i]=t=0;
System.Linq
maka!l.Any()
lebih pendek daripadal.Count<1
, yang lebih pendek daril.Count==0
.w != 0 && w !=1
denganw > 1
.C # - 177 Bytes
Tidak disatukan
sumber
Mathematica, 63 byte
Cukup menarik untuk bermain golf! Abaikan pesan sesekali yang muncul.
sumber
Ruby, 120 byte
sumber
TI-BASIC, 47 byte
Ini menggunakan fakta bahwa, pada kalkulator baru,
L₁
diinisialisasi dan dihapus. Perhatikan bahwa mencoba menampilkan daftar kosong di TI-BASIC menimbulkan kesalahan.sumber
APL, 16 karakter
Dalam Bahasa Inggris:
,\⍵
: vektor prefiks vektor hingga elemen ke-n dari argumen+/¨⍵=
: per vektor awalan, hitung berapa banyak yang sama dengan elemen ke-n itu sendiri×⍵|
: tanda-tanda mod (yaitu: 0 jika sisa divisi adalah 0, 1 sebaliknya)⍵/⍨
: dari argumen tetap hanya elemen di mana mod adalah 0sumber
Racket 179 byte
Tidak Disatukan:
Pengujian:
Keluaran:
sumber