Diberikan daftar bilangan bulat, buat topeng boolean sedemikian rupa sehingga indeks yang sebenarnya dapat digunakan untuk memfilter nilai yang berbeda dari daftar. Indeks mana yang dipilih sebagai yang benar tidak masalah asalkan hanya satu dari mereka yang dipilih untuk setiap set indeks yang sesuai dengan nilai yang identik.
Input akan berupa daftar bilangan bulat non-kosong dalam format yang sesuai untuk bahasa Anda dan hasilnya akan berupa daftar nilai boolean mengikuti spesifikasi di atas. Anda diizinkan untuk menggunakan definisi Anda sendiri tentang nilai-nilai kebenaran dan kepalsuan dalam daftar keluaran.
Dalam contoh saya di bawah ini, saya mendefinisikan 1
sebagai kebenaran dan 0
kepalsuan.
[5, 4, 7, 1] Input
[1, 1, 1, 1] Output
Select only the values with with true indicies in the sieve
[5 4 7 1] Contains zero duplicate values
[5, 9, 7, 5, 6, 0, 5]
[0, 1, 1, 1, 1, 1, 0]
[ 9, 7, 5, 6, 0 ]
Uji Kasus
Ketika ada or
, itu berarti ada beberapa keluaran yang valid. Jika ada elips trailing ...
setelah or
, itu berarti bahwa tidak semua output yang mungkin terdaftar.
[0] = [1]
[55] = [1]
[32, 44] = [1, 1]
[0, 0] = [1, 0] or [0, 1]
[9001, 9001, 9001] = [1, 0 , 0] or [0, 1, 0] or [0, 0, 1]
[5, 4, 7, 1] = [1, 1, 1, 1]
[1, 2, 3, 4, 3, 5] = [1, 1, 1, 1, 0, 1] or
[1, 1, 0, 1, 1, 1]
[5, 9, 7, 5, 6, 0, 5] = [1, 1, 1, 0, 1, 1, 0] or
[0, 1, 1, 1, 1, 1, 0] or
[0, 1, 1, 0, 1, 1, 1]
[0, 8, 6, 6, 3, 8, 7, 2] = [1, 1, 1, 0, 1, 0, 1, 1] or
[1, 0, 0, 1, 1, 1, 1, 1] or
[1, 0, 1, 0, 1, 1, 1, 1] or
[1, 1, 0, 1, 1, 0, 1, 1]
[45, 47, 47, 45, 24, 24, 24, 8, 47, 41, 47, 88]
= [1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 1] or ...
[154, 993, 420, 154, 154, 689, 172, 417, 790, 175, 790, 790, 154, 172, 175, 175, 420, 417, 154, 175, 172, 175, 172, 993, 689, 993, 993, 790]
= [1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] or ...
Aturan
- Ini adalah kode-golf sehingga solusi terpendek menang.
- Dibangun secara bawaan!
- Anda diizinkan untuk menggunakan definisi Anda sendiri tentang nilai-nilai kebenaran dan kepalsuan dalam daftar keluaran. Jika Anda memilih untuk melakukannya, sebutkan definisi Anda.
- Input akan berupa daftar bilangan bulat non-kosong yang tidak kosong.
- Anda bebas memilih antara mengeluarkan hanya satu saringan atau beberapa saringan atau bahkan semuanya. Selama setiap saringan valid, itu akan diterima.
[0, 8, 6, 6, 3, 8, 7, 2]
, harus[1, 0, 0, 1, 1, 1, 1, 1]
ditambahkan ke daftar output yang valid?Jawaban:
MATL,
764 byte1 byte disimpan berkat @Luis
2 byte disimpan berkat @Dennis
Kami mendefinisikan
1
kebenaran dan semua nilai lainnya sebagai falseyCobalah secara Online
Semua uji kasus
Penjelasan
sumber
&=Rs1=
l=
.Jelly , 4 byte
Nikmat kejadian terakhir. Cobalah online! atau verifikasi semua kasus uji .
Bagaimana itu bekerja
sumber
Python 3,
47353936 bytePops item pertama dari daftar, periksa apakah ada di tempat lain dalam daftar, dan masukkan
True
atauFalse
ke dalam daftar baru.Untuk fungsi ini,
False
tunjukkan nilai yang berbeda, danTrue
jika tidak (True=0
danFalse=1
)Terima kasih kepada Dennis untuk satu ton byte
Asli, 47 byte:
Cobalah
sumber
lambda n:[1-(n.pop()in n)for x in n*1]
menghemat beberapa byte.lambda n:[n.pop()in n for x in n*1]
berfungsi juga..pop(0)
atau topeng keluar terbalik..pop()
memproses elemen terakhir terlebih dahulu, sehingga berada dalam urutan terbalik.Pyth, 6 byte
Menghasilkan daftar bools (
True
danFalse
). Memeriksa setiap elemen dalam input, jika indeksnya sama dengan indeks kemunculan nilai pertama. Dengan kata lain, ini memeriksa apakah setiap elemen adalah kejadian pertama.Dalam pseudocode pythonic:
Uji di sini.
sumber
J , 2 byte
Dari sinilah ide untuk tantangan ini berasal. Builtin
~:
disebutNub-Sieve
dalam J dan membuat daftar boolean yang melakukan operasi yang dijelaskan dalam tantangan. Di sini,1
mewakilitrue
dan0
mewakilifalse
.sumber
05AB1E , 8 byte
Kode:
Penjelasan:
Menggunakan pengkodean CP-1252 . Cobalah online! .
sumber
APL, 6 byte
Cobalah
Penjelasan:
sumber
C #, 63 byte
Saya juga bisa membuatnya mengembalikan 1 atau 0 dan therby membuat parameter dan kembali ketik yang sama therby memungkinkan saya untuk membuat ini ekspresi lambda dengan sendirinya?
beberapa panduan akan dihargai
kode jenis yang sama
sumber
Python, 35 byte
Digunakan
True
sebagai nilai palsu danFalse
nilai kebenaran. Menandai penampilan terakhir setiap elemen.Pilih elemen pertama hanya jika itu tidak muncul di antara elemen-elemen yang tersisa, kemudian berulang ke sisa daftar selama itu tidak kosong. The
l.pop(0)
ekstrak elemen pertama sementara juga menghapus itu.sumber
Retina , 23 byte
Input adalah daftar yang dipisahkan oleh ruang. (Sebenarnya, format lain seperti
[1, 2, 3]
juga akan berfungsi selama ada ruang di depan setiap angka kecuali yang pertama.)Cobalah online!(Bekerja pada beberapa test case yang dipisahkan linefeed sekaligus.)
Kami cukup mengubah setiap elemen menjadi
0
jika ada salinan lain nanti di input dan1
sebaliknya.sumber
PowerShell v2 +, 40 byte
Membuat array kosong
$a
. Lalu kami mengambil daftar input melalui$args[0]
dan pipa itu menjadi satu lingkaran|%{...}
. Setiap iterasi kita pilih salah satu1
atau0
dari pseudo-ternary berdasarkan pada apakah elemen saat ini ada$a
atau tidak. Pilihan-pilihan itu ditinggalkan di jalur pipa. Kami kemudian menambahkan elemen saat ini ke dalam array$a
. Elemen-elemen pipa dikumpulkan, dan output sebagai array adalah implisit.Contoh:
(output di sini dengan pemisah baris baru, karena itu default
.ToString()
untuk array)sumber
JavaScript (ES6), 31 byte
Nol adalah kebenaran dan angka lainnya palsu.
sumber
Mathematica,
5331 byteTerima kasih kepada mil karena memberi saya ide yang menghemat 22 byte.
sumber
MapIndexed
lebih dari daftar sebelumnya?MapIndexed[s[[;;#-1&@@#2]]~FreeQ~#&,s=#]&
membutuhkan 41 byte.MapIndexed
kasus ini dan Anda bahkan tidak perlu mengekstraksi atau mengurangi indeksPerl 5
sumber
..
menyediakan konteks skalar, jadi Anda tidak perlu~~
. 2.grep
Mengembalikan kebenaran / kepalsuan, jadi Anda tidak perlu?1:0
. 3.grep/.../,@a
lebih pendek darigrep{/.../}@a
. 4. Anda tidak perlu membutuhkan final;
. 5. Anda tidak perlu lagi menggunakan tanda kurung1..@a
. 6. Anda tidak menunjukkan dari mana input berasal atau output akan menuju: lihat meta.codegolf.stackexchange.com/q/2447Java, 96 byte
Memodifikasi array di tempat. Nikmat kejadian terakhir.
Nilai sebenarnya adalah
1
sementara nilai palsu adalah0
.Verifikasi semua testcases .
Tidak Disatukan:
sumber
Sebenarnya, 11 byte
Cobalah online!
Penjelasan:
sumber
Pyke, 4 byte
Coba di sini!
sumber
C ++, 242 byte
Diakui solusi berlebihan, karena bekerja pada setiap kontainer standar setiap jenis memerintahkan:
Tidak Disatukan:
(dan selanjutnya digeneralisasi)
Test suite:
sumber
TSQL 52 byte
Biola
sumber
PHP,
666239 bytekecuali nilai yang bernilai false (false, 0, "") dan string numerik ("1" sama dengan 1)
versi baru (program, 37 + 2 byte)
mengalahkan Java dan (sekarang lagi) C #. Bahkan hampir mengalahkan Python sekarang. Senang.
0
benar dari (benar) dan1
(salah)memasukkan
!
setelahprint
membalikregister_globals=On
,short_open_tags=On
danerror_reporting=0
dalamphp.ini
untukphp-cgi
itu panggil
php-cgi -f <filename> a[]=<value1> a[]=<value2> ...;echo""
;$a
dengan$_GET[a]
(+6), aturshort_open_tags=On
danerror_reporting=0
$a
denganarray_slice($argv,1)
(+19), hapus<?
(-2)dan panggil
php -d error_reporting=0 -r '<code>' <value1> <value2> ...;echo""
versi lama (fungsi, 62 byte)
false
untuk true dantrue
false; (ouput sebagai string kosong atau1
)masukkan
!
sesudahnya$m[]=
untuk membalikkantes (pada versi lama)
sumber
Haskell,
2927 byteGunakan
False
sebagai benar,True
sebagai nilai palsu:Anda mungkin harus
import Data.List
menggunakantails
tetapi, tryhaskell.org menjalankan kode apa adanya.sumber
\a->[...]
adalah fungsi yang tepat. Jika ragu, berikan nama:f a=[...]
.import Data.List
sangat banyak. Sebuah. adalah kemiringan yang sangat licin karena Anda dapat memasukkan jumlah impor (atau bahkan definisi!) dalam konfigurasi GHCi Anda. b. memperlakukan tryhaskell.org sebagai implementasi otoritatif dari bahasa Haskell, tetapi sebenarnya bukan satu. (Sekali lagi, bagaimana jika saya membuat lingkungan try-Haskell-online saya sendiri yang dilengkapi dengan semua impor dan definisi yang diinginkan pegolf? Apakah itu masih benar-benar “Haskell”?)Perl 5 + Perligata , 343 byte
315 byte, ditambah 28 untuk
-MLingua::Romana::Perligata
Gunakan sebagai
perl -MLingua::Romana::Perligata foo.pl
; input (dari stdin) dan output (ke stdout) adalah string underscore yang dipisahkan oleh bilangan bulat desimal. Diuji pada Strawberry 5.20.2 dengan versi 0.6 dari Perligata; Saya tidak tahu apakah itu berfungsi dengan Perligata versi 0.50.Jelas ini sejelas bel. Jika tidak, jalankan dengan
-MLingua::Romana::Perligata=converte
alih alih-MLingua::Romana::Perligata
, danperl
akan, alih-alih menjalankan skrip, menghasilkan terjemahan ke dalam Perl biasa:Untuk analisis token-to-token, gunakan
-MLingua::Romana::Perligata=discribe
.Catatan golf:
.
.scinde
tidak perlu argumen kedua, dan menggunakanhoc
.ao aum tum nullum addementum da
karena saya tidak bisa mendapatkanmorde
bekerja.per ium in qis... ro I da
karena saya tidak bisa mendapatkanvanne
bekerja.huic vestibulo perlegementum da
, saya mencoba-pMLingua::Romana::Perligata
, tetapi tidak berhasil, juga.Hanya untuk iseng (walaupun seluruh jawaban ini hanya untuk iseng):
Huic vestibulo perlegementum da. Qis lacunam scindementa da. Dum qis fac sic ao qis decumulamentum da. Ao aum tum nullum addementum da. Meo io. Meo ro. Per ium in qis fac sic si ium tum aum aequalitas fac sic ro I da cis cis. Ro nullum tum non rum addementum da. Capita bis rum cis. Per in bis fac sic hoc tum lacunam egresso scribe cis.
, Google Terjemahan memberiThis court perlegementum grant. QIS gap scindementa grant. While QIS QIS decumulamentum do so ao da. Ao sum and no addementum grant. My io. My ro. Through ium in QIS do so if the sum ium equality do so ro 1 from cis. Ro was not any rum addementum grant. The heads of the bis side. Write, do so as soon as he at that time that in the gap by the Kish was taken.
.sumber