Anda diberi string dan dua karakter. Anda harus mencetak string di antara karakter-karakter ini dari string.
Memasukkan
Input pertama-tama akan berisi string (tidak kosong atau null
). Di baris berikutnya, akan ada dua karakter yang dipisahkan oleh spasi.
Tantangan
Kembalikan string antara dua karakter
Contoh
Hello! What's your name?
! ?
harus menghasilkan output:
" What's your name"
Aturan
- String tidak akan lebih dari 100 karakter dan hanya akan berisi karakter ASCII dalam rentang
(spasi) hingga
~
(tilde) (kode karakter 0x20 hingga 0x7E, inklusif). Lihat tabel ASCII untuk referensi. - Anda harus mengambil input dari
stdin
(atau alternatif terdekat). - Outputnya harus dikelilingi dengan tanda kutip (
"
). - Anda dapat menulis program lengkap, atau fungsi yang mengambil input, dan mengeluarkan string terakhir
- Kedua karakter hanya akan berisi karakter ASCII dalam rentang
(spasi) hingga
~
(tilde) (kode karakter 0x20 hingga 0x7E, inklusif). Lihat tabel ASCII untuk referensi. - Tidak ada jaminan bahwa kedua karakter akan berada di string.
- Jika salah satu karakter tidak ditemukan dalam string, cetak
"null"
. - Jika salah satu karakter ditemukan lebih dari satu kali (kecuali kedua karakter sama) dalam sebuah string, cetak
"null"
. - Jika kedua karakter adalah karakter yang sama, cetak string
"null"
.
Uji Kasus
1)
<HTML>code</HTML>
> < --> "null"
2)
What's what?
' ' --> "null"
3)
abcdefghijklmnopqrstuvwxyz
n k --> "lm"
4)
Testing...
e T --> ""
5)
Last test-case
- --> "test"
Mencetak gol
Ini adalah kode golf, jadi pengiriman terpendek (dalam byte) menang.
"
? Haruskah kita mengelilinginya dengan sepasang kutipan lain dan tidak peduli tentang itu?one"two-three \n" -
output:"two"
(\n
adalah baris baru)Jawaban:
CJam,
343332 byteCobalah online di juru bahasa CJam .
Ide
Hapus karakter kedua dari baris 2.
Bentuk string yang terdiri dari satu salinan dari semua karakter yang memiliki kedua garis yang sama
Ulangi string yang dihasilkan dua kali dan buang dua karakter pertama.
Ini menghasilkan string dua karakter (jika karakter dari baris 2 berbeda dan keduanya muncul di baris 1) atau string kosong.
Ganti karakter string yang dihasilkan di baris 1 dengan baris baris.
Membagi baris 1 di baris baris.
Elemen kedua array yang dihasilkan akan menjadi string yang diinginkan jika array mengandung tepat tiga potongan.
Ganti elemen pertama array dengan string null .
Ambil elemen kedua array jika panjangnya 3 dan yang pertama sebaliknya.
Tambahkan dan tambahkan penawaran ganda.
Kode
sumber
CJam, 38 byte
Terlalu panjang...
Penjelasan
sumber
Pyth,
373634 byteBerkat @isaacg untuk menghemat dua byte.
Cobalah secara online: Pyth Compiler / Executor
Penjelasan:
sumber
*2]1
lebih pendek dari[1 1)
, dan- ... 1
masih lebih pendek.-...1
tidak berfungsi, karena saya juga perlu memeriksa bahwa ada dua angka.[1 1)
:jT9
.Python 3, 149 byte
Versi Tidak Serigala:
Ini adalah jawaban pertama saya di sini, jadi tip dan kritik sangat dihargai.
sumber
Ruby,
1089594Dan untuk versi yang tidak diserang
sumber
->s,f,l{begin a,b=[f,l].map{|u|raise if f==l||s.count(u)>1;s.index u}.minmax;p s[a+1...b];rescue;p'null'end}["<html>test</html>",?>,?<]
.[...]
Pada akhirnya adalah apa yang memanggil fungsi.->s,f,l{begin a,b=[f,l].map{|u|raise if f==l||s.count(u)>1;s.index u}.minmax;p s[a+1...b];rescue;p'null'end}["Last test-case"," ","-"]
raise
, Anda dapat menggantiraise
dengan variabel yang tidak ditentukan seperti_
atauy
. Ini menimbulkan NameError. Juga, saya pikir Anda bisa menyimpan beberapa byte lagi tanpa penyelamatan eksplisit:->s,f,l{a,b=[f,l].map{|u|(f==l||s.count(u)!=1)&&p('null')&&exit;s.index u}.minmax;p s[a+1...b]}
C, 192 byte
Kode tidak dikunci:
Uji di sini
sumber
Python 3, 172 byte
sumber
Javascript ( ES6 ),
125123 byteIde sangat dicuri dari solusi @ edc65.
sumber
[a,,b]=
, saya akan menggunakannya lain kali. Karena regex merepotkan, berikut adalah solusi gratis regex:[a,,b]=(P=prompt)(s=P()), P((s=s.split(a)).length==2& (s=[].concat(...s.map(s=>s.split(b)))).length==3 ?``"${s[1]}"``:null)
Python, 161 byte
Solusinya kebanyakan hanya menggunakan ekspresi reguler untuk mengekstrak string. Untuk mengakomodasi bahwa huruf-huruf tersebut dapat cocok dengan kedua arah, awal dan akhir bagian yang cocok memungkinkan salah satu huruf. Memeriksa bahwa huruf-huruf yang benar-benar cocok dengan yang berbeda mengecualikan huruf yang sama dicocokkan dua kali, serta dua huruf dalam input sama.
Ini adalah upaya pertama saya menggunakan Python untuk mendapat jawaban di sini. Jadi umpan balik tentang kemungkinan perbaikan sangat disambut. Saya khususnya merasa bahwa harus ada cara untuk membuat kondisi dalam pernyataan cetak lebih pendek.
sumber
Python 3, 155 byte
Cobalah online
sumber
golflua, 132 byte
Jawabannya cukup jelek. Bit input agak kasar (dan membutuhkan dua baris, pertama dengan string & kedua dengan karakter slice). Menemukan lokasi bendera sangat mudah, tetapi terlalu lama untuk bersaing dengan jawaban lain. Outputnya cukup mudah. Program Lua yang setara adalah
sumber
Perl, 65
Ini mengharuskan tidak ada karakter baris baru di pada baris kedua input.
sumber
null
kasus ini.