Di celah standar , berikut ini dilarang :
Mengklaim bahwa jawaban Anda ditulis dalam "MyOwnLanguage", di mana perintah itu
x
berarti "membaca urutan angka, membaginya menjadi kelompok tiga, dan mencetak angka terakhir dari kelompok-kelompok itu di mana angka kedua kurang dari yang pertama"
Di sini, kita akan melakukan hal yang persis sama.
Tugas
Diberi urutan bilangan bulat positif, yang panjangnya dapat dibagi 3, bagi mereka menjadi tiga kelompok, dan cetak angka terakhir dari kelompok-kelompok itu di mana angka kedua kurang dari yang pertama.
Testcases
Input Output
[] []
[1,2,3,4,5,6,7,8,9] []
[2,1,3,5,4,6,8,7,9] [3,6,9]
[3,1,4,1,5,9,2,6,5] [4]
[100,99,123] [123]
[123,123,456] []
[456,123,789] [789]
Mencetak gol
Ini adalah kode-golf . Jawaban terpendek dalam byte menang.
Celah standar berlaku, jadi ingatlah untuk tidak memiliki perintah bawaan x
yang melakukan tugas ini.
code-golf
arithmetic
array-manipulation
Biarawati Bocor
sumber
sumber
MyOwnLanguage
dan menambahkanx
perintah ...: Px
melakukan itu.p
, dapatkah saya menggunakannya?Jawaban:
Oktaf, 32 byte
Cobalah online!
atau
Verifikasi kasus uji!
sumber
Jelly ,
98 byteCobalah online!
Bagaimana itu bekerja
sumber
Haskell,
3029 byteUpaya pertama saya bermain golf Haskell, jadi saya mungkin melewatkan satu atau dua optimasi
-1 byte terima kasih kepada @JulianWolf
sumber
x d=d
dapat menghemat satu byteMathematica, 37 byte
Dengan asumsi ini memenuhi spesifikasi, ngenisis mendapat kredit untuk pendekatan ini yang mengarah pada penghematan 1 byte!
Fungsi murni.
BlockMap[...,#,3]&
membagi daftar input menjadi daftar panjang 3 dan kemudian beroperasi pada setiap daftar dengan fungsiIf[#>#2,Print@#3]&@@#&
. Hasilnya adalah bahwa setiap nomor terakhir yang memenuhi syarat dicetak. Fungsi ini juga mengembalikan nilai (yaitu daftarNull
sepertiga sepanjang daftar input), yang tampaknya merupakan perilaku yang diperbolehkan.Mathematica,
4238 byteTerima kasih kepada Martin Ender karena telah menghemat 4 byte!
Fungsi murni.
#~Partition~3
lakukan apa yang kamu pikirkan.Cases[X,P:>Q]
memilih semua elemen yangX
cocok dengan polaP
, dan mengembalikan hasil aturan transformasi yang:>Q
diterapkan untuk setiap instance. Di sini, pola yang dicocokkan adalah{a__,b_}/;a>0
:b_
akan cocok dengan elemen terakhir dari daftar dana__
semua elemen lainnya (dalam hal ini, dua yang pertama); hubungi merekay
danz
untuk sekarang. Sneakya>0
kemudian diperluas key>z>0
, yang merupakan tes yang ingin kita terapkan (valid karena spec mengatakan semuanya akan menjadi bilangan bulat positif). Dan aturan transformasi adalah:>b
, yang hanya mengganti setiap pencocokan yang dipesan tiga kali lipat dengan elemen terakhir.Pengajuan asli:
Fungsi murni; cukup banyak implementasi langsung, selain
#.{1,-1,0}
yang menghitung perbedaan antara elemen pertama dan kedua dari masing-masing sublist 3-elemen.sumber
#>#2&@@#&
lebih pendek. Namun secara keseluruhan masih lebih pendek untuk digunakanCases
daripadaSelect
:Cases[#~Partition~3,{a__,b_}/;a>0:>b]&
a>0:>
memiliki dua macam sihir di dalamnya!BlockMap
menggoda di sini.BlockMap[If[#>#2,#3,Nothing]&@@#&,#,3]&
berfungsi dan hanya 39 byte ... bisakah kita menyimpan beberapa byte?BlockMap[If[#>#2,Print@#3]&@@#&,#,3]&
bisa dibilang memenuhi spesifikasiPyth, 10 byte
Suite uji
sumber
R, 35 byte
sumber
Brachylog (2), 14 byte
Cobalah online!
Brachylog agak kesulitan dengan masalah semacam ini. Perhatikan bahwa program ini memiliki kompleksitas komputasi yang mengerikan, karena program ini dengan kasar memisahkan input menjadi kelompok-kelompok 3 (tidak memiliki built-in "dibagi menjadi kelompok-kelompok"); ini berjalan cepat dengan empat kelompok tetapi sangat lambat dengan lima kelompok.
Penjelasan
sumber
l÷₃;?ḍ₍
adalah alternatif yang lebih cepat./
tidak÷
; mereka setara di sini), tapi itu satu byte lebih lama jadi saya membuangnya saat golf turun.J , 14 byte
Ini mengevaluasi ke kata kerja monadik. Cobalah online!
Penjelasan
sumber
Alice ,
1211 byteTerima kasih kepada Leo karena telah menghemat 1 byte.
Cobalah online!
Menggunakan titik kode string sebagai daftar input dan mengeluarkan karakter yang sesuai dengan keluaran yang harus disimpan.
Penjelasan
sumber
r
sebagai gantinyaex
. TIO05AB1E , 8 byte
Kode:
Menggunakan penyandian 05AB1E . Cobalah online!
sumber
dc , 30 byte
I / O: satu nomor per baris.
sumber
Perl 5 , 31 byte
30 byte kode +
-p
bendera.Cobalah online!
Ganti setiap kelompok dengan 3 angka (
\d+ (\d+) (\d+)
) dengan yang ketiga ($2
) jika yang kedua ($1
) lebih kecil dari yang pertama ($&
), dan tidak ada yang sebaliknya.sumber
CJam , 15 byte
Blok anonim yang mengharapkan argumen pada stack, dan meninggalkan hasilnya pada stack.
Cobalah online! (Menjalankan semua kasus uji)
Penjelasan
sumber
Brain-Flak , 82 byte
Cobalah online!
sumber
Jelly , 10 byte
Cobalah online!
atau
Verifikasi kasus uji
-3 byte terima kasih kepada @LeakyNun
Penjelasan
sumber
s3µṪ×>/µ€ḟ0
s3µṪWx>/µ€
R, 37 byte
Versi
scan()
yang saya tidak suka, tetapi membuatnya lebih pendek.Versi
function()
yang lebih mudah untuk diuji (41 byte)Berkat @Giuseppe! Ide bagus menggunakan daur ulang indeks.
Uji:
Keluaran:
sumber
x
dari stdin dengan menggunakanx=scan()
di awal alih-alih mendefinisikan suatu fungsi, Anda juga dapat dengan mudah mengaturi=c(1,2,0)
karena indeks logis didaur ulang yaitu,x=scan();i=c(1,2,0);x[!i][x[i>1]<x[i==1]]
x=scan()
pendekatan ini karena membuat input sangat rumit. Dan saya tidak bisa membuatnya berulang saat itu.matrix()
tetapi entah bagaimana aku tidak percaya itu akan menjadi singkat.JavaScript (ES6),
4644424139 byteCobalah
Masukkan daftar angka yang dipisah koma, tanpa spasi.
Penjelasan
sumber
y%3>1&a[y-1]<a[y-2]
bekerja?Sekam , 8 byte
Cobalah online!
Penjelasan
Program ini sedikit terlibat, jadi ikut saya.
Fungsi ini
ΓȯΓ↑<
mengambil daftar panjang 3x = [a,b,c]
,. Yang pertamaΓ
terbagix
menjadia
dan[b,c]
, dan memberinya sebagai argumen untuk fungsi tersebutȯΓ↑<
. Ini harus sama dengan((Γ↑)<)
, tetapi karena bug / fitur penerjemah, sebenarnya setara dengan(Γ(↑<))
, ditafsirkan sebagai komposisi dariΓ
dan↑<
. Sekarang,a
diumpankan ke fungsi terakhir menggunakan aplikasi parsial, fungsi yang dihasilkan↑<a
diberikan kepadaΓ
, yang mendekonstruksi[b,c]
menjadib
dan[c]
. Kemudianb
diumpankan ke↑<a
, menghasilkan fungsi yang mengambilb<a
elemen pertama dari daftar. Fungsi ini akhirnya diterapkan pada[c]
; hasilnya adalah[c]
jikaa>b
, dan[]
jika tidak. Daftar ini disatukan olehṁ
untuk membentuk hasil akhir, yang dicetak secara implisit.Tanpa "fitur", saya akan memiliki 9 byte:
sumber
Python 3 ,
4342 byte1 byte terima kasih kepada xnor.
Cobalah online!
sumber
MATL , 10 byte
Hasilnya ditampilkan sebagai angka yang dipisahkan oleh spasi.
Cobalah online!
Atau verifikasi semua kasus uji . Ini menampilkan representasi string dari output, sehingga array kosong benar-benar terlihat
[]
. Perhatikan bahwa dalam MATL angka sama dengan array tunggal, jadi[4]
ditampilkan sebagai4
.Penjelasan
sumber
Röda , 15 byte
Röda hampir sesingkat bahasa golf ...
Ini mengambil tiga nilai dari aliran, dan mendorong yang ketiga (
_3
) kembali, jika yang kedua (_2
) kurang dari yang pertama (_1
).Garis bawah adalah sintaksis gula untuk
for
loop, sehingga program dapat ditulis sebagai{{[a]if[b<c]}for a,b,c}
atau bahkan{[a]for a,b,c if[b<c]}
.Tidak ada tautan TIO, karena itu tidak bekerja pada TIO karena alasan tertentu (walaupun bekerja dengan versi terbaru dari Röda yang ada sebelum tantangan).
sumber
Java 7,
8685 byte-1 byte terima kasih kepada @ PunPun1000
Penjelasan:
Coba di sini.
sumber
3,9
untuk kasus uji1,2,3,4,5,6,7,8,9
alih-alih3,6,9
).C #, 126 Bytes
Jika Anda ingin seluruh program dengan metode ini akan menjadi 175 Bytes :
Disimpan 7 Bytes dengan bantuan TheLethalCoder
sumber
(int[]i)
bisa sajai
tidak perlu untuk jenisnya.(i)
.Python 2 , 57 byte
Cobalah online!
sumber
CJam , 16 byte
Output ditampilkan sebagai angka yang dipisahkan oleh spasi.
Cobalah online!
Penjelasan
sumber
PHP, 89 Bytes
Cobalah online!
sumber
JavaScript,
108107108 byteIni adalah fungsi JS anonim (lambda) yang valid. Tambahkan
x=
di awal dan aktifkan likex([5,4,9,10,5,13])
. Output sebagai fungsireturn
.Cuplikan menerima input sebagai daftar bilangan bulat yang dipisahkan koma.
sumber
martin
dandennis
sebagai id?[5,4,9,10,5,13]
.,
array daripada angka! Solusinya baik-baik saja. Hanya cuplikan test case yang salah. Saya sudah memperbaikinya, sekarang. Terima kasih telah menunjukkan itu! :)Perl5.8.9,
7360 byte(58 + 2 untuk tanda 'n' untuk membaca seluruh file dan untuk autosplit). Mengasumsikan input adalah garis angka yang dipisahkan oleh spasi
Pengurangan berkat Dada. Termasuk cetakan di bagian akhir untuk visibilitas, itu akan menghemat 8 byte jika tidak.
sumber
print"\n"
di akhir. Juga, Anda bisa lakukan$b[1]<$b[0]&&print"$b[2] "while@b=splice@a,0,3
untuk menghemat 7 byte. Akhirnya, Anda dapat menggunakan-a
flag alih-alih melakukan@a=split
(itu akan melakukan hal yang sama secara otomatis dan menyimpan hasilnya@F
sebagai gantinya@a
); dengan Perl 5.8.9, Anda perlu-na
sementara dengan Perls baru,-a
sudah cukup. Itu akan membuat Anda mencapai 47-48 byte.Clojure, 43 byte
Membosankan: /
sumber
Bash , 61 byte
Cobalah online!
sumber