Tulis program atau fungsi yang menggunakan string baris tunggal kosong. String dapat berupa nol atau lebih banyak spasi diikuti oleh satu periode ( partikel ), seperti .
atau .
, atau string akan menjadi urutan satu atau lebih garis miring ke depan dan belakang ( gelombang ) yang bisa dimulai dengan salah satu, seperti sebagai \
atau /\/
atau \/\/\/\/\/\/
.
Dalam kedua kasus, perbanyak partikel / gelombang ke kanan dengan satu unit.
Secara khusus, dalam kasus partikel, masukkan spasi sebelum .
, memindahkannya satu tempat ke kanan, lalu output string yang dihasilkan. Sebagai contoh:
.
→ .
.
→ .
.
→ .
.
→ .
.
→ .
.
→ .
.
→ .
.
→ .
Dalam kasus gelombang, tambahkan salah satu /
atau secara \
tepat sehingga gelombang terus bergantian dan panjangnya bertambah satu, lalu output string yang dihasilkan. Sebagai contoh:
/
→ /\
\
→ \/
/\
→ /\/
\/
→ \/\
/\/
→ /\/\
\/\
→ \/\/
/\/\
→ /\/\/
\/\/
→\/\/\
Dalam kedua kasus, output mungkin tidak memiliki spasi tambahan tetapi baris tambahan opsional diizinkan.
Kode terpendek dalam byte menang.
Jawaban:
C, 69 byte
Ini membutuhkan mesin little-endian, dan keluaran ke terminal yang mendukung kode pelarian ASCII.
p=s[strlen(s)-1]^46
ambil kode ASCII terakhir dari string input, dan XOR dengan kode ASCII titik.p^=p?93:3022856
akan menyebabkanp
menjadip^93
jika kode ASCII bukan (kembali) slash, di manap^46^93 == p^115
, yang akan beralih antara belakang dan garis miring. Jikap
sebuah titik, itu akan menjadi3022856
, yang merupakan little-endian untuk"\b ."
.printf("%s%s",s,&p);
mencetak string input diikuti oleh integerp
, ditafsirkan sebagai string byte kecil-endian.sumber
3022856
dengan'. \b'
, literal karakter multibyte. Jawaban yang luar biasa!Jelly ,
1714 byteCobalah online! atau verifikasi semua kasus uji .
Bagaimana itu bekerja
sumber
CJam, 16 byte
Cobalah online! atau verifikasi semua kasus uji .
Bagaimana itu bekerja
sumber
Python, 41 byte
Kasus kerja. Menggunakan urutan yang diurutkan
' ', '.', '/', '\'
. Untuk spasi dan titik, tambahkan spasi. Jika tidak, tambahkan garis miring atau garis hitam berlawanan dengan karakter terakhir.sumber
Python,
4442 bytesMengganti karakter terakhir dengan set karakter yang sesuai. tautan ideone
(-2 byte berkat fungsi pemetaan yang lebih pendek dari @ xsot)
sumber
-ord(s[-1])&3
juga memberikan 3 indeks berbeda.&
!Bahasa Game Maker, 107 byte
sumber
Vim,
2723 penekanan tombolJawaban vim pertama, belum pernah menggunakan vim sama sekali.
Cara kerjanya: Ini menambahkan a
/
di akhir baris, subs//
untuk/\
, subs./
untuk.
sumber
/
s jika Anda menggunakan pembatas yang berbeda, misalnyas#//#/\\
.MATL , 19 byte
Cobalah online! Atau verifikasi semua kasus uji .
Penjelasan
sumber
CJam,
352625 byteDisimpan 9 byte berkat dennis
Disimpan 1 byte lagi, juga berkat dennis
Cobalah online!
Mungkin bermain golf dengan buruk, tapi saya tidak terlalu mengenal CJam. Mungkin ada cara yang lebih baik untuk memeriksa apakah suatu elemen ada dalam array, tetapi saya tidak dapat menemukan operator untuk itu.
Penjelasan:
sumber
W
pada awalnya-1
dan?
berfungsi baik dengan blok dan item tumpukan lainnya, sehingga Anda dapat mengurangi kode Anda menjadiq:I'.#)SI+IW='/=I'\+I'/+??
&
.05AB1E,
1715 bytePenjelasan
Cobalah online
sumber
C, 85 byte
Ideone
Saya belum tidur selama sekitar 20 jam, kode saya mungkin bisa bermain golf banyak.
sumber
Brachylog , 35 byte
Suite uji. (Sedikit dimodifikasi.)
sumber
Matlab,
74716257 byteIni menghitung dua karakter terakhir berdasarkan
s(1)
(karakter pertama) - untuk menentukan apakah kita berurusan dengan\/
case, dan karakter terakhirs(end)
untuk membuat tuple yang tepat untuk\/
karakter.sumber
Retina, 19 byte
^H
mewakili byte BS. Cobalah online!sumber
/
akan menjadi/\/
.> <> , 47 byte
Cobalah online!
Baris pertama adalah loop input standar> <>. Baris kedua memilih karakter yang sesuai dari
/ \
untuk menambahkan ke string, berdasarkan pada karakter input terakhir. Selain itu, jika karakter input terakhir adalah a.
, dua elemen teratas akan diaktifkan. Akhirnya, isi tumpukan dicetak secara terbalik.sumber
JavaScript,
79706558 bytesumber
b.charAt(i+1)
denganb[i+1]
untuk menyimpan beberapa byte. Juga, ini tidak berfungsi untuk semua kasus uji.\/
memberi `/ \`, misalnya.b
dani
sebagai params dengan nilai default:(a,b=...,i=...)=>
to avoidreturn
{ }
juga karena ini.C # - 46 byte
s=>s[0]<47?' '+s:s+(s.EndsWith("/")?'\\':'/')
Coba di sini.
sumber
Haskell,
464544 byteMengambil keuntungan dari fakta bahwa
<
.
</
<0
<\
dalam tabel ASCII untuk menyimpan dua bytesumber
Python 2, 72 byte
Setiap bantuan bermain golf akan sangat dihargai!
Ini mengambil karakter terakhir dalam input dan mengubahnya menjadi kode ASCII untuk mendapatkan indeks yang sesuai dalam daftar dua karakter. Kedua karakter tersebut ditambahkan ke semua karakter input hingga yang terakhir.
sumber
SQF, 91
Menggunakan format fungsi-sebagai-file:
Sebut sebagai
"STRING" call NAME_OF_COMPILED_FUNCTION
sumber
Perl, 30 + 1 (
-p
) = 31 byteKebutuhan
-p
dan-M5.010
atau-E
untuk dijalankan:Implementasi tantangan yang lurus ke depan. (Perhatikan bahwa
||
antara dua regex terakhir adalahor
, karena mungkin sulit dibaca, jadi ketiga regex adalah:,s/\./ ./
dans|/$|/\\|
, dans|\\$|\\/|
)sumber
C #, 54 byte
sumber
PowerShell v2 +,
59585251 byteMengambil input
$n
, membuangnya ke operasi indeks array. Kami memilih elemen dari array berdasarkan indeks['.\/'.IndexOf($n[-1])
- yaitu, berdasarkan karakter terakhir dari input$n
, ini akan mengakibatkan0
,1
atau2
. Itu sesuai dengan string array yang sesuai. Dalam kasus apa pun, string yang dihasilkan ditinggalkan di jalur pipa dan pencetakan tersirat.Uji kasus
sumber
C #,
8063 bytesumber
s=>{var c=s[s.Length-1];return c<'/'?" "+s:c>'/'?s+"/":s+"\\";}
63 dotnetfiddle.net/8x79azs=>{var c=s[s.Length-1];return c<47?' '+s:s+(c>47?'/':'\\');}
61 dotnetfiddle.net/ykKIL1Kode mesin ARM di Linux, 50 byte
Hex dump:
Posting pertama di sini, harap saya melakukan ini dengan benar. Ini adalah perakitan ARM 32-bit, khususnya Thumb-2. String input adalah string yang diakhiri NUL yang diambil melalui r0, output dicetak ke stdout. Dalam sintaks C, prototipe untuk fungsi tersebut akan menjadi void func_name (char * string). Ini adalah keluhan AAPCS (ARM calling convention), jika tidak maka 2 byte dapat dicukur habis.
Inilah kumpulan yang setara, dengan komentar yang menjelaskan apa yang terjadi:
sumber
ECMAScript 6/2015 (JavaScript), 41 byte
Tangkapan bagus Neil.
sumber
+(s+1)
?s<'/'
,.R, 119 byte
Tidak Disatukan:
sumber
SED,
41 3627disimpan 7 terima kasih ke charlie
menggunakan 3 substitusi:
s/\./ ./
menambahkan spasi jika ada.
s|/$|/\\|
,s|$|/|
menambahkan garis miring yang tepat untuk akhirpenggunaan
|
bukan/
sebagai pembatast
bercabang sampai akhir jika regex kedua cocok sehingga tidak menambahkan garis miring lainnyasumber
s/\./ ./;s./$./\\.;t;s.$./.
- ini 27 byte. Substitusi 3 disederhanakan dan pada sistem saya-re
tidak diperlukan. Selain itu, saya menggunakan.
bukannya#
tetap secara visual di ruang input. ; o)Turtlèd , 32 byte (tidak bersaing)
Penjelasan:
sumber
Java 7, 76 byte
Cukup mudah.
Tidak digabungkan & kode uji:
Coba di sini.
Keluaran:
sumber