Diberikan dua string, menghasilkan string ketiga yang tidak sama dengan salah satu dari dua input, tetapi memiliki panjang yang sama (dalam karakter) sebagai salah satu dari input. Dijamin ada setidaknya satu output yang valid.
Uji Kasus
Test case dikutip untuk menunjukkan bahwa mereka adalah string. Keluaran adalah salah satu dari banyak kemungkinan.
input, input -> output
"test", "test" -> "tttt"
"do", "don't" -> "dnut_"
"ye s", "yes" -> "fals"
"yes", "yes" -> "noo"
"maybe", "mayue" -> "false"
"false", "false" -> "truee"
"false", "true" -> "fatr"
"1", "" -> "0"
"", "t" -> "s"
"", "abcabc" -> "testst"
"abcdefghijklmnopqrstuvwxyz", "aaaaaaaaaaaaaaaaaaaaaaaaaa" -> "zbcdefghijklmnopqrstuvwxya"
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb" -> "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
Aturan
- Anda dapat memilih domain input Anda, tetapi domain itu harus terdiri dari setidaknya ASCII yang dapat dicetak, dan domain output Anda harus sama dengan domain input Anda.
- Panjang input mungkin sama atau berbeda.
- Output harus valid dengan probabilitas 1; yaitu, Anda dapat menghasilkan string acak sampai satu valid (dan secara teoritis Anda mungkin infinite loop), tetapi Anda tidak bisa hanya mengeluarkan string acak dan berharap itu valid. Perhatikan bahwa ini berarti output Anda tidak perlu bersifat deterministik.
- New trailing newlines diperbolehkan, tetapi mereka tidak diperhitungkan terhadap panjang output.
- Karena pertanyaan tentang Kesalahan Memori, itu harus bekerja dalam 60 detik hingga panjang input
6
. Sebuah jawaban yang bekerja untuk itu dan secara teoritis bekerja untuk string yang lebih lama adalah OK, tetapi sesuatu yang Kesalahan Memori pada komputer modern untuk panjang input4
tidak valid.
Ini adalah kode-golf , jadi jawaban tersingkat dalam byte menang.
Jawaban:
05AB1E ,
87 byteMenggunakan penyandian 05AB1E . Cobalah online!
sumber
Haskell, 43 byte
Mengambil string maks (secara leksikografis kemudian), yang kita tahu tidak kosong; mengganti semua karakter dengan salah satu dari "a", "b", dan "c" menggunakan
<$
; dan mengembalikan yang pertama yang bukan input. Saya pikir ini mirip dengan jawaban Arang Neil dan / atau jawaban CJam dari geokavel .(Saya sudah mengintai untuk sementara waktu tetapi ini adalah pertama kalinya saya menjawab di situs ini; hai!)
sumber
Brainfuck, 97 byte
Jalankan kode online (perhatikan bahwa "memori dinamis" harus dipilih di kanan bawah)
Tantangan yang luar biasa! Saya pikir itu akan sepele tetapi akhirnya menjadi sangat sulit. Saya terus kembali ke sana karena saya merasa harus ada solusi BF 20-atau-begitu-elegan yang elegan. Pada titik ini, saya cukup senang saya (tampaknya) dapat berfungsi sama sekali di BF.
Input diambil sebagai
str1
+\0
+str2
, di mana string adalah karakter 1-byte non-nol berturut-turut.Pengembalian
(first str1 + first str2) or (first str1 + 1) or 2
. Algoritma ini dipikirkan oleh brilian @ ØrjanJohansen, (mungkin) berdasarkan yang asli saya (rusak).Berkomentar:
sumber
a=2
,b=1
. Anda perlu menambahkan alih-alih mengurangi.S
masalah kosong dengan menambahkan>
di awal dan kemudian melakukan[<]>
pada byte paling kiriS
- jika bukan nol itu tidak melakukan apa-apa, kalau tidak itu akan mengubah string.b
. Tapi tidaka
.!= a
hanya itu, jika saya mencetakS/0, S/1, ...
alih-alihS/0, F/1, ...
itu akan berfungsi.Jelly , 8 byte
Cobalah online!
Bagaimana?
sumber
B
TIOX
atauẊ
di sana ...Python 3 ,
6247575451 byteSunting: - 5 byte berkat @ Mr.Xcoder
Edit: +10 byte untuk memperbaiki bug
Edit: -3 byte terima kasih kepada @betaveros
Edit: -3 byte dengan menggunakan max, bukan pop
Cobalah online!
sumber
{"a","b","c"}
==>{*"abc"}
( 57 byte )(x[1:]or y[1:])
==>max(x,y)[1:]
?(x or y)[1:]
, saya pikir Anda hanya perlu menghindari string kosong.{*"abc"}
ke{*`id`}
...*len(x or y)
sebagai gantinya+max(x,y)[1:]
.Arang , 22 byte
Cobalah online! Tautan adalah untuk mengucapkan versi kode. Menghasilkan semua string karakter huruf besar yang diulang dengan panjang input yang lebih panjang dan mencetak lebih banyak semua yang tidak muncul dalam input. Dengan kata lain, output biasanya
ZZZ...
kecuali itu adalah salah satu input, dalam hal iniYYY...
kecuali jika itu adalah input lain, dalam hal ini ituXXX...
.sumber
Mathematica, 111 byte
coba online (tempel kode dengan ctrl + v, masukkan input di akhir dan tekan shift + enter)
memasukkan
thanx @Tidak pohon untuk memeriksa dan golf -21 byte
sumber
Perl 6 ,
3830 byteCobalah online!
Codeblock anonim yang mengambil input sebagai daftar dari dua string, dan mengembalikan nomor pertama dari
1111...
dengan jumlah 1s yang tidak kosong yang tidak ada dalam input.Penjelasan:
sumber
long long
sayangnya menggunakan .Zsh ,
51473736 byte-4 byte dengan menggunakan array builtin
argv
, -10 byte dengan menggunakan prefix removal danRC_EXPAND_PARAM
, -1 byte dengan menggarisbawahi ekspansi brace.Cobalah online!
Pertama, ini adalah tantangan yang luar biasa, saya pergi melalui banyak ide sebelum mendarat yang ini.
@
dan*
bukan pengidentifikasi, jadi${ :|@}
dan${ :|*}
tidak berfungsi, karenanya penggunaan${ :|argv}
Zsh ,
4847 byte *Cobalah online!
Sepenuhnya metode baru milik pengajuan Perl 6 JoKing, tetapi tidak bekerja pada string besar (n> 20) karena batasan ukuran bilangan bulat.
$@[(I)$i]
adalah lookup array terbalik untuk indeks terbesar, itu akan menghasilkan nol (falsy dalam ekspansi aritmatika) jika $ i tidak ditemukan dalam parameter baris perintah.sumber
MATL , 12 byte
Input adalah array sel string yang berisi karakter ASCII yang dapat dicetak. Keluaran dibentuk dari huruf-huruf
'ABC'
, dan jadi milik domain input.Cobalah online!
Penjelasan
Outputnya sepanjang input string terpanjang. Karakter ke- n adalah huruf pertama dari
'ABC'
yang berbeda dari karakter ke- n dari kedua string input.sumber
Haskell,
565248 byteCobalah online!
Ganti karakter pertama dengan maksimum dua string input
a
,b
danc
dan pilih karakter pertama yang berbeda dari kedua string input.sumber
Ruby , 53 byte
Cobalah online!
Pada dasarnya menghasilkan string
a...a
,,b...b
danc...c
dan memilih yang pertama tidak di input.sumber
ES6, 54 byte
sumber
Pyth, 7
8byteTerima kasih 1 byte untuk Jakube
Suite uji
Kami menggunakan
.T
, mempertahankan transpos panjang, bukanC
, memotong transpos, sehingga bekerja pada input di mana satu string kosong.Dengan diberi dua string sebagai tupel, kami memindahkannya (
.T
), lalu memetakan pasangan karakter atau karakter tunggal yang dihasilkan dengan mengurangkan karakter dari alfabet lowerase dengan-LG
, lalu mentransposasikan daftar string yang dihasilkan dari karakter yang tidak digunakan denganC
, lalu kembali string pertama denganh
. Ini terdiri dari huruf pertama secara alfabet yang tidak ada dalam string, untuk setiap posisi.sumber
Java (OpenJDK 8) ,
10073 byte-27 byte berkat sentuhan magis @ Nevay! :)
Cobalah online!
Input domain = Printable ASCII + codepoint 127.
sumber
Ruby, 56 byte
sumber
Pyth ,
2322 byteCoba di sini!
Pyth , 22 byte
Test Suite!
Penjelasan
sumber
Perl 5,
8279 byteMengambil input sebagai dua argumen terpisah dan mengembalikan string ketiga.
Subrutin mencoba menghasilkan string yang sangat mirip dengan string pertama tetapi dengan non-
z
karakter pertama diganti dengan az
. Kemudian ia berurusan dengan kasus sudut dengan mengganti karakter pertama dengany
ataux
, sesuai kebutuhan, jika menemukan bahwa salah satu input sebenarnya adalah urutan dari semuaz
.sumber
Perl 5 , 68 byte
Penjelasan:
Mulai dari "a" adalah untuk menghindari kenaikan ke titik di mana Perl memperpanjang string; dengan hanya dua string untuk menghindari yang sama, itu tidak bisa meluap.
Jalankan dengan:
sumber
C (gcc) ,
7065736761 byteFungsi ini membutuhkan string yang disediakan agar bisa berubah (yaitu array atau dialokasikan secara dinamis).
Cobalah online!
Bekerja untuk kisaran ASCII standar
Penjelasan:
sumber
*a==255
dan*b==0
?R,
8967 byte@Giuseppe menyimpan 9 byte, @ user2390246 menyimpan 13 byte
fungsi
demo
sumber
x
dany
dalamsubstr
perintah yang sama . Juga, kurung kurawal danreturn
tidak perlu:function(x,y)sub("^.",letters[!letters%in%substr(c(x,y),1,1)][1],x)
return
karena ini adalah fungsi, dan kawat gigi karena itu adalah satu liner.f("","1")
hasil""
, yang sama dengan input pertama ... mungkin ini harus ditambahkan sebagai test case lainJava 8, 119 byte
Lambda (kari) dari
String
ke lambda dariString
keString
. Tetapkan untukFunction<String, Function<String, String>>
.Cobalah secara Online
Lambda yang tidak tersentuh
Solusi ini memutar karakter ASCII acak ke string yang lebih panjang sampai kondisi yang diperlukan terpenuhi. Input adalah UTF-8 dan output adalah ASCII.
Saya tidak tahu rincian kasar dari Unicode, tetapi tampaknya masuk akal bagi saya bahwa solusi ini bisa gagal ketika ditambahkan menambahkan
char
titik kode sebelumnya untuk membentuk unit kode tunggal. Jika seseorang yang tahu lebih banyak tentang ini dapat memverifikasi ini, saya akan mengubah domain input ke ASCII.Java 8, 126 byte
Jenis yang sama seperti di atas.
Cobalah secara Online
Lambda yang tidak tersentuh
Ini menambah byte pertama dari string yang lebih panjang, membungkus dalam ASCII, sampai kondisi yang diperlukan terpenuhi. Input dan output adalah string ASCII.
sumber
APL (Dyalog Unicode) , 11 byte SBCS
Program lengkap, mengambil input sebagai daftar bersarang 2-elemen.
Cobalah online!
sumber
Bash,
115.. 77 byteMengganti karakter pertama dari string input pertama (tidak kosong) dengan 1,2,3 hingga tidak ada kecocokan yang ditemukan pada input mana pun. Cobalah secara Online!
-9, -12, -9, -8 byte semua berkat GammaFunction
(Cukup perbaikan dari aslinya ... )
sumber
=
dan||
di baris terakhir, dan menggunakan${x:-empty_fallback}
untuk menghapus terner mulai. Juga, Anda perlu mengutip gema akhir untuk kasus spasi tambahan. TIO Wajibshift
, saya mendapatkannya untuk mengikat metode saya dalam dua metode yang berbeda .@($1|$2)
pencocokan polaPerl 5 , 79 + 1 (-p) = 80 byte
Cobalah online!
sumber
Japt , 17 byte
Mengulangi huruf
A-Z
dengan panjang input yang lebih panjang, menghilangkan nilai-nilai dalam input, dan mendapatkan item pertama dalam array.Cobalah online!
Solusi lama, 18 byte
Cobalah online!
Pilih karakter acak dari alfabet dan ulangi hingga panjang string input yang lebih panjang, hingga tidak ada dalam input.
sumber
["abcdefghijklmnopqrstuvwxyz", "AAAAAAAAAAAAAAAAAAAAAAAAAA"]
. Ketika menjalankannya berkali-kali, ia kembali"AAAAAAAAAAAAAAAAAAAAAAAAAA"
(seperti jawaban Pyth saya, sampai saya memperbaikinya)Ì
harus berfungsi sebagai penggantig1
untuk penyimpanan 2 byte (dalam array 2 elemeng1
=gJ
) tetapi tampaknya ada bugÌ
ketika menggunakan;
.J
tidak lagi-1
karena;
mengubahnya,
. Itu sebabnya saya menggunakan1
di tempat pertama.Python 3,
7473 byte-1 byte berkat Langkah Hen
Mencetak integer terendah dengan panjang yang sama dengan input pertama yang memiliki panjang bukan nol.
sumber
i
sebagai parameter fungsi default:def f(x,y,i=1):
. Saya pikir Anda dapat menyimpan byte lain denganwhile10*i
tetapi saya tidak yakin.while i*10<10**len(x or y)or str(i)in x+y
denganwhile i<10**~-len(x or y)or str(i)in x+y
( 72 bytes )f=lambda x,y,i=1:(i<10**~-len(x or y)or str(i)in x+y)and f(x,y,i*2)or i
( 71 byte )Python 2, 77 byte
Saya pikir ini memiliki beberapa potensi. Idenya adalah bahwa ia menambahkan 1 ke char 1 di string 1, kemudian memeriksa apakah char 1 input lain adalah sama.
** Catatan, ^ tidak menangani 0 string panjang, jadi itu tidak benar-benar berfungsi pada panjang ini.
Inilah solusi super panjang yang bekerja dengan 0 length
146 Bytes
Setiap perbaikan akan dihargai!
sumber
CJam,
313023 byteMengambil ASCII yang dapat dicetak sebagai input. Menghasilkan string 0's, 1's, atau 2's yang panjangnya sama dengan salah satu string input. Logikanya adalah bahwa salah satu dari mereka tidak dapat berupa string input!
Cobalah secara Online
sumber
:+!
.C # (Mono) , 94 byte
Cobalah online!
sumber