Ambil dua input, vektor / daftar kosong yang berisi digit 1
dan 2
dan sebuah string (tidak, Anda tidak boleh mengambil 0/1
sebagai gantinya). String akan menjadi salah satu dari yang berikut ini (dalam huruf kecil, persis seperti yang tertulis di bawah ini:
increasing
decreasing
ones
twos
all
none
Jika string ____ maka Anda harus mengembalikan indeks ___:
increasing
... tempat daftar berubah dari1
menjadi2
(setiap2
yang mengikuti langsung setelah a1
)decreasing
... tempat daftar berubah dari2
menjadi1
(setiap1
yang mengikuti langsung setelah a2
)ones
... dari semua digit yang ada1
twos
... dari semua digit yang ada2
all
... semua digitnone
... tidak ada digit.0
baik-baik saja jika daftar ini diindeks 1. Angka negatif baik-baik saja jika daftar diindeks 0. Anda juga dapat menampilkan daftar atau string kosong.
Kasus uji:
Ini adalah 1-diindeks. Anda dapat memilih jika Anda ingin 1-diindeks atau 0-diindeks. Vektor yang sama digunakan untuk string yang berbeda dalam kasus uji.
--------------------------------
Vector:
1 1 2 2 2 1 2 2 1 1 2
String - Output
increasing - 3, 7, 11
decreasing - 6, 9
ones - 1, 2, 6, 9, 10
twos - 3, 4, 5, 7, 8, 11
all - 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11
none - 0 / []
------------------------------------
Vector:
1
String:
ones - 1
all - 1
decreasing / increasing / twos / none - 0 / []
Mencetak gol
Karena ini adalah kode-golf , jawaban dengan byte terkecil menang.
Jawaban:
JavaScript (Firefox 30-57),
7473 bytePemahaman array adalah cara yang rapi untuk menggabungkan
map
danfilter
sekaligus. Sunting: Disimpan 1 byte berkat @ edc65.sumber
Python 2 ,
13613111910897 bytelambda
fungsi.enumerate()
bukanrange(len())
.0
-indexing (seperti dalam jawaban TFeld ) dan golf"adinot".find(m[0])
keord(m[0])/3-32
.Cobalah online!
sumber
1
atau2
, Anda dapat mengubah(l[j]>1)*(l[~-j]<2)
ke(l[j]>l[~-j])
untuk 119 byte1
-indeks.enumerate()
Python 2 ,
117111110999792 byteCobalah online!
0
-indeksBeralih ke menggunakan pengindeksan Jonathan , dan golf
ord(m[0])/3-32
keord(t[0])/3%7
sumber
l[i]==2
kel[i]>1
.Haskell ,
1128381 byteCobalah online! Contoh penggunaan:
"increasing"%[1,1,2,1,2]
. Hasil diindeks 1.Sebagian terinspirasi oleh jawaban Haskell dari Lynn .
sumber
MATL ,
32313029 byteOutput berbasis 1, atau kosong.
Cobalah online!
Penjelasan
Kode menghitung enam kemungkinan output untuk input array, dan kemudian memilih output yang sesuai tergantung pada input string.
Untuk memilih output, poin kode ASCII dari semua karakter input string ditambahkan. Hasil modulo 9 memberikan
6
,1
,5
,2
,7
,0
masing-masing untuk'increasing'
,'decreasing'
,'ones'
,'twos'
,'all'
,'none'
. Karena semua angka yang dihasilkan berbeda, ini dapat digunakan sebagai kriteria seleksi.Alih-alih benar-benar melakukan operasi modulo 9 pada penjumlahan, daftar input yang mungkin diperluas hingga 9 entri (beberapa di antaranya adalah dummy), dan pengindeksan ke dalam daftar itu secara otomatis dilakukan modulo 9.
sumber
Python 2 , 92 byte
Cobalah online!
sumber
Jelly , 27 byte
Cobalah online!
Terima kasih kepada Jonathan Allan .
sumber
0
adalah tautan terbawah, tetapi tampaknya seperti lebihÇ
aneh, terima kasih! (juga saya baru belajar kata baru: p)Sekam , 27 byte
Cobalah online!
-9 terima kasih kepada H.PWiz .
Saya cukup bangga dengan jawaban ini.
sumber
ΘẊ>
danΘẊ<
dan`fN
0
adalah elemen terakhir.¨₆Żσa¨
alasan saya tidak menggunakan fitur itu, terima kasih. Dan sekarang saya bisa mengatakan itu mengikat Jelly .Java (OpenJDK 8) ,
266217213205172171155131 byteCobalah online!
sumber
y
sebagaichar
, Anda dapat tes golf kesetaraan sukay.equals("a")
untuky=='a'
,y==97
atau bahkany<98
.19
yaituc
nilai tertinggi 's,c==19
sama denganc>18
.s->a->{int i=0,l=0,c=s.charAt(0)-97;for(int e:a){if(++i>1&(c==8&e>l|c==3&e<l)|c==14&(l=e)<2|c>18&l>1|c<1)System.out.print(i+",");}}
Jq 1,5 , 131 byte
Berdasarkan pendekatan xcali karena pencocokan string lebih pendek daripada versi array saya.
Asumsikan jq dipanggil dengan
-Rs
opsi dan input muncul pada dua baris misalnyaDiperluas:
Cobalah online!
sumber
Haskell , 91 byte
Cobalah online!
Laikoni menyimpan satu byte.
sumber
(i,y,x)<-zip3[1..]l$l!!0:l
.J, 73 byte
Akan sangat penasaran untuk melihat bagaimana ini bisa dikondensasi secara signifikan - Saya percaya itu bisa (10 karakter hanya untuk semua agenda orangtua!)
g
- kata kerja pembantu untuk menambah dan mengurangi, yang hanya berarti membandingkan nilai-nilai infiks\
run dari ukuran 2@.
Cobalah online!
sumber
1=]
dan2=]
tidak bekerja? Juga, bagaimana jikag
mengambil nomor sebagai argumen kiri dan daftar sebagai argumen kanan dan mengembalikan indeks yang2-/\
diterapkan pada daftar sama dengan argumen kiri. Dengan begitu Anda bisa melewatinya_1
atau1
untuk menemukan berkurang dan meningkat daripada menggunakan kata keterangan.Java 8,
233229216 bytePendekatan String ini berakhir lebih lama dari yang saya harapkan .. Tetapi bahkan berpikir saya sangat tidak bermain golf dengan jawaban Java 8 lainnya , saya memutuskan untuk tetap mempostingnya.
Itu pasti bisa golf, bahkan dengan pendekatan ini .. "Tidak ada" dan "naik / turun" terutama disebabkan beberapa solusi yang menghabiskan beberapa byte ..
Hasilnya adalah 1-diindeks.
Penjelasan:
Coba di sini.
sumber
Perl 5 , 71 + 2 (
-nl
) = 73 byteCobalah online!
Logika yang direvisi secara efektif sama dengan penjelasan di bawah ini, tetapi kecocokan pola telah dipersingkat.
Sebelumnya:
Cobalah online!
Tidak menghasilkan apa-apa jika kriteria tidak cocok.
Dijelaskan:
sumber