Terinspirasi oleh tantangan ini .
Tujuan:
Diberikan switchboard pra-konfigurasi dan daftar indeks, membalikkan switch pada indeks yang diberikan.
Sebuah papan switch terdiri dari sejumlah saklar ( v
atau ^
) yang dibungkus -
dan disusun menjadi barisan dengan panjang yang bervariasi. Berikut ini adalah contoh switchboard:
-v-^-v-
-^-v-
-v-^-v-
Membalikkan / membalik saklar berarti mengubahnya dari v
menjadi ^
, atau dari ^
ke v
.
Sakelar diindeks dari kiri ke kanan, atas ke bawah. Misalnya, dalam contoh di atas, yang terakhir v
di baris pertama akan berada di posisi 3 dan ^
di baris tengah berada di 4 (menggunakan 1-pengindeksan).
Memasukkan:
- Sebuah string (atau daftar string) mewakili switchboard. Dijamin cocok dengan regex
((-[v^])+-)(\n(-[v^])+-)*
. - Daftar nomor yang mungkin kosong yang mewakili indeks, mungkin 0 atau 1 (atau nomor arbitrer jika Anda mau) diindeks. Ini adalah sakelar yang perlu dibalik.
Keluaran:
- Switchboard dalam bentuk yang sama dengan input dengan switch yang ditentukan terbalik. Setiap sakelar yang tidak ditentukan harus mempertahankan status awalnya.
Aturan:
- Input akan selalu diformat dengan benar dan tidak ada indeks yang diberikan akan di luar batas.
- Daftar indeks akan diurutkan dan tidak akan memiliki duplikat.
- Nyatakan dalam jawaban Anda apa pengindeksan yang Anda gunakan, baik itu 0, 1, atau yang sewenang-wenang.
- Trailing whitespace baik-baik saja selama outputnya terlihat seperti input.
- Ini adalah kode-golf sehingga kode terpendek menang.
Contoh:
#Using 1-indexing
input: #Empty Case
[],
-v-^-v-
output:
-v-^-v-
input: #Single switch
[1],
-v-
output:
-^-
input: #Skip a line
[3,5],
-^-v-v-
-v-
-^-^-
output:
-^-v-^-
-v-
-v-^-
input: #Flip one in each line + number wrap
[3,4,6],
-^-v-v-
-v-
-^-^-
output:
-^-v-^-
-^-
-^-v-
input: #Flip 'em all
[1,2,3,4,5,6],
-^-v-v-
-v-
-^-^-
output:
-v-^-^-
-^-
-v-v-
>"-"
: Karena string input dijamin untuk memulai-
, Anda dapat memeriksa terhadap parameter / argumen / nama variabel yang Anda gunakan untuk itu.Jawaban:
Vim,
60, 46, 38, 37 bytes / penekanan tombol<esc>
dan<C-r>
keduanya 1 byte / keystroke. Penghitung ByteTest Case 1 (mode Verbose)
Test Case 2 (mode Verbose)
Terima kasih kepada Grimy untuk ide-ide yang menyebabkan pengurangan 22 byte :)
sumber
:s/\%V./\='v^'[submatch(0)=='v']
bisacl<C-R>='v^'['<C-R>"'=='v']
untuk -13 byte? (setiap <CR> hanya satu byte).s == cl
, sangat-14
keseluruhan.s^v!<Esc>?\<C-R>"<CR>xhf!x
ataus<CR>^v<Esc>:s/\V<C-R>"<CR>kgJ
.-
, jadi itu benar-benar berfungsi! Duh.JavaScript,
6359 byteCobalah online!
Disimpan 4 byte berkat Arnauld .
sumber
K (oK) ,
3127 byteLarutan:
Cobalah online!
Penjelasan:
Jawaban cepat, akan mencoba golf itu. Diindeks 0.
Catatan:
>93
triknyasumber
Python 3 ,
140134103 byte(-30 Berkat DJMcMayhem ♦, -1 lebih banyak terima kasih kepada Black Owl Kai)
Cobalah online!
Oof, coba lagi golf apa saja. Ini hanya menggunakan loop yang agak tidak canggih di atas string, gunakan
x
untuk melacak indeks switch saat ini. Menggunakan pengindeksan 1.Tidak Disatukan:
sumber
Jelly , 12 byte
Program lengkap yang menerima string dan daftar bilangan bulat yang mencetak hasilnya.
Cobalah online!
Bagaimana?
sumber
Python 3.8 (pra-rilis) ,
80,78,77,71, 70 byte-1 byte, terima kasih kepada @Shaggy
Cobalah online!
sumber
c>s
menghemat satu byte.Perl 6 , 31 byte
Cobalah online!
(-2 byte terima kasih kepada Jo King)
Operator substitusi Perl 6 dengan
S
mudah mengambilnth
kata keterangan yang tidak hanya menerima indeks tunggal untuk melakukan penggantian, tetapi juga daftar mereka, persis seperti yang dibutuhkan di sini.Pengganti adalah
$/ ~^ '('
, di mana$/
teks yang cocok (salah satuv
atau^
),~^
adalah operator atau stringwise eksklusif, dan(
merupakan karakter yang bit-bitnya berubahv
menjadi^
dan sebaliknya.sumber
MATL , 29 byte
Cobalah online! Atau verifikasi semua kasus teks .
Input adalah array sel string dan vektor baris angka, dengan pengindeksan berbasis 1. Keluaran diisi dengan benar dengan spasi.
sumber
Python 2 ,
1059791 byteCobalah online!
6 byte disimpan dengan
mencurimenggunakan Rin's Fourier transform ,c>'-'
bukanc in'^v'
.0
-indekssumber
Jelly , 14 byte
Cobalah online!
Program lengkap.
Ini terasa terlalu panjang ...
sumber
”-
dengan nama argumen pertama (³
?), Yang dijamin akan dimulai dengan-
, bukan?>
vektorisasi. Anda dapat melihat bahwa itu tidak berhasil .³
,⁴
,⁵
,⁶
dan⁷
, untuk pertama kepada PKB kelima masing-masing. Anda dapat membaca halaman Atom untuk mengetahui apakah ada fungsi bawaan tertentu.Stax , 13 byte
Jalankan dan debug itu
Ini menggunakan indeks berbasis 0.
[v^]
.40
. Inixor('v', '^')
.sumber
Bersihkan , 93 byte
Cobalah online!
Menentukan fungsi
$ :: [Int] -> [Char] -> [Char]
mengambil daftar indeks indeks nol dan mengembalikan fungsi yang mengambil string dan mengembalikan string yang diubah.sumber
JavaScript (Node.js) ,
1019893917767 byteCobalah online!
10 byte, terima kasih untuk saran oleh Shaggy .
Port jawaban Python saya . Tidak terbiasa bermain golf javascript!
sumber
V , 20 byte
Cobalah online!
Menggunakan beberapa fitur baru, seperti
Ñ
yang sangat berguna.sumber
JavaScript, 111 byte
Kode
Mengambil input dalam format f (x) (y) di mana x adalah indeks dan y adalah switchboard. Indeks 0 diindeks
Cobalah online!
Penjelasan
Untuk setiap indeks
membangun regex yang menemukan indeks +1 "^" atau "v"
masukkan ke string untuk menggantinya dengan simbol yang berlawanan "v" <-> "^"
kemudian mengevaluasi string sebagai fungsi
Setelah mengulangi indeks untuk beralih, kembalikan papan tombol
sumber
Jelly , 17 byte
Cobalah online!
Program penuh mengambil indeks sebagai argumen pertama dan string sebagai argumen kedua. Mencetak output dengan sakelar yang ditunjukkan terbalik.
sumber
Retina 0.8.2 ,
6662 byteCobalah online! Tautan termasuk test case. 1-diindeks. Penjelasan:
Ubah nomor input menjadi unary.
Transliterasi antara
v
dan^
semua karakter dengan properti yang jumlahv
s dan^
s sejauh ini (inklusif) sama dengan salah satu nomor input.Hapus nomor input.
sumber
Arang , 23 byte
Cobalah online! Tautan adalah untuk mengucapkan versi kode. Diindeks 0. Penjelasan:
sumber
Ruby , 56 byte
1-diindeks.
Cobalah online!
sumber
C # (Visual C # Interactive Compiler) , 73 byte
Cobalah online!
sumber
Japt , 15 byte
Cobalah
sumber
Japt ,
1614 byteCobalah
sumber
:D
)