Tantangan
Tulis sebuah program yang menerapkan fungsi injeksi yang mengambil pasangan string yang dipesan sebagai input dan satu string sebagai output. Dengan kata lain, setiap input harus dipetakan ke output yang unik.
Spesifik
- Input mungkin setiap dua string panjang sewenang-wenang, tetapi akan hanya terdiri dari karakter ASCII yang dapat dicetak (kode ).
- Demikian pula, string output tidak memiliki batasan panjang, tetapi harus hanya terdiri dari karakter ASCII yang dapat dicetak.
- Jika bahasa Anda tidak dapat menangani string dengan panjang sewenang-wenang, program mungkin hanya bekerja secara teoritis untuk string dengan ukuran berapa pun.
- Pemetaan dari input ke output harus konsisten antara pelaksanaan program. Kalau tidak, pemetaan yang Anda gunakan sepenuhnya terserah Anda, asalkan itu injeksi.
- Input dipesan. Jika dua string input berbeda, mereka harus menghasilkan output yang berbeda daripada jika mereka bertukar.
- Tidak setiap string harus berupa output yang memungkinkan.
- Jawaban terpendek di setiap bahasa menang!
Uji kasus
Input berikut harus semuanya menghasilkan output yang berbeda. Untuk menghindari kebingungan, string dikelilingi oleh guillemets («») dan dipisahkan oleh spasi tunggal.
"Halo Dunia" «Lelho» «drowl» «Berbeda» «_rent» "tidak sama" «Kode» «Golf» «Co» «deGolf» «CodeGolf» «» «» «» «» «» «» «» «» «» «» «» «Abc", »« def » «Abc» «," def » «Abc '» «def» «Abc '» «def» «\» «" » «\\» «\" »
Jawaban:
brainfuck,
30292723 byteCobalah online!
Input dipisahkan oleh
0x01
byte.Ini berubah
["foo", "bar"]
menjadifUToUToUTUTbUTaUTrUT
. Untuk memulihkan dua string asli, ambil grup 3 karakter, temukan satu di mana huruf kedua tidakU
, dan pisahkan di sana.sumber
JavaScript (ES6), 14 byte
Mengambil input sebagai array dari 2 string. Terinspirasi oleh jawaban Luis .
Cobalah online!
JavaScript (ES6),
2120 byteMengambil input sebagai
(a)(b)
.Cobalah online!
Mengembalikan panjanga , diikuti oleh koma, diikuti oleh rangkaian a dan b .
sumber
stringify
trik sendiri!a="hello",""
b="world"
dana="hello"
b="","world"
["\"hello\",\"\"","\"world\""]
dan["\"hello\"","\"\",\"world\""]
.JSON.stringify()
pasti lolos"
. Lihat dump hex .jq -c, 0 byte
Cobalah online!
Ini pasti terasa seperti selingkuh ...? Tetapi tampaknya memenuhi aturan tantangan.
Secara default,
jq
akan menampilkan inputnya dalam format JSON yang dapat dibaca manusia. The-c
(kompak) flag memberitahujq
ke output dalam "kompak" gaya, yang menghilangkan baris baru (karena tantangan melarang ASCII non-printable).sumber
["","x"]
dan["x",""]
masingPython 3 , 3 byte
Fungsi (built-in) yang, diberikan daftar dari dua string, memberikan representasi string dari daftar
Cobalah online!
sumber
Japt
-S
, 3 byteSaya masih merasa harus kehilangan sesuatu di sini ...
Cobalah
Kemungkinan 2 byte:
Cobalah
Atau lakukan peregangan dengan 1-byter ini:
Cobalah
Versi pertama memetakan setiap string dalam array ke titik-titik kodenya dan menampilkannya dengan spasi.
Versi kedua membagi setiap string ke array karakter dan menampilkannya bergabung dengan spasi.
Dan versi ketiga, yang terasa seperti selingkuh, hanya menampilkan input dengan
-Q
flag melakukan pengangkatan yang beratsrringify
.sumber
Pyth , 4 byte
Cobalah online!
Ini mengonversi setiap string ke basis 256 dan kemudian bergabung dengan mereka dalam urutan dengan a
"
. Karena hasilnya adalah masing-masing angka yang"
dipisahkan dengan jelas dan string asli dapat dipulihkan denganmCsdczN
.sumber
T-SQL, 38 byte
varchar
Penggunaan
QUOTENAME
, yang mengelilingi string dengan[]
dan juga lolos dari tanda kurung internal. Harus memetakan ke hasil yang unik.sumber
SELECT CONCAT(QUOTE(a),QUOTE(b))FROM t
Cobalah onlineZsh , 7 byte
Cobalah online!
Secara implisit bergabung dengan argumen tentang ruang. Itu
q
pengubah memberitahu zsh mengutip argumen, yang krusial lolos spasi, memastikan ruang unescaped jelas memisahkan dua argumen.(Tanpa
q
,"a " "b"
dan"a" " b"
keduanya akan menghasilkan"a b"
.)sumber
MATL , 1 byte
Kode mengambil array dari dua string sebagai input, dan menampilkan representasi string dari array itu.
Cobalah online!
Penjelasan
Kode hanya membaca input sebagai string, tidak dievaluasi.
sumber
Jelly , 2 byte
Tautan monadik yang menerima daftar dua daftar karakter sebagai argumennya yang menghasilkan satu daftar karakter.
Cobalah online!
Bagaimana?
Ini adalah bawaan untuk mendapatkan representasi string Python, simpel.
sumber
Haskell, 4 byte
Haskell built-in untuk mengubah segalanya menjadi string. Input diambil sebagai sepasang string.
Cobalah online!
sumber
05AB1E , 2 byte
Cobalah online! Menafsirkan setiap string sebagai bilangan bulat 256, lalu mencetak keduanya dalam formulir
[1, 2]
.05AB1E, 1 byte (validitas tidak diketahui)
Cobalah online!
Mengambil produk cartesian dari input dengan sendirinya. Kutipan dalam input tidak luput, yang dapat menyebabkan kebingungan. Saya brute-paksa semua kombinasi hingga 12
", "
dan"], ["
dan tidak menemukan tabrakan; Namun, saya tidak dapat membuktikan bahwa tidak ada tabrakan untuk string yang lebih panjang. Jika ada yang bisa memberikan bukti atau contoh tandingan, saya akan sangat menghargainya!0-byter yang sepele gagal karena tanda kutip tidak diloloskan: input (
", "
, string kosong) dan (string kosong,", "
) keduanya menghasilkan output["", "", ""]
.1-byter
º
(mirror setiap string input) juga gagal karena ini: input (", "" ,"
, string kosong) dan (string kosong," ,"", "
) keduanya menghasilkan output["", "" ,"", "" ,"", ""]
.sumber
C # dengan 26 byte (terima kasih kepada Lukas Lang, Kevin Cruijssen dan Jo King)
tio.run lambda
sumber
$"{a.Length}.{a}{b}"
- Anda selalu dapat mengekstraksia
danb
dari sini tanpa ambiguitas (baca saja sampai yang pertama.
untuk mendapatkan panjangnyaa
,b
kemudian sisanyaArang , 12 byte
Try it online! Link is to verbose version of code. Explanation:
sumber
PowerShell, 22 bytes
Many fixes thanks to mazzy
Try it online!
Take five, oh my.
sumber
"ab" "c"
and"a" "bc"
both produce the same output.R, 4 bytes
Try it online!
A built-in function which returns the string representation of the input (inspired by Jonathan Allan's answer )
sumber
Wolfram Language (Mathematica), 8 bytes
Try it online!
sumber
{"Hello, ","World"}
and{"Hello",", World"}
don't they give the same string?Compress
it is thenCSS + HTML, 55 + 20 = 75 bytes
Provide the inputs in the HTML after
<code>
tags. Visually injects letters one by one from each input into the output. When an input is longer than the other one, visual spaces are shown for missing letter(s) of the shorter input. Also one comma is added in HTML to force visual output uniqueness (I hope).sumber
C# (Visual C# Interactive Compiler), 5 bytes
Try it online!
sumber
Perl 6,
63 bytesTry it online!
Outputs the object representation to STDERR.
sumber
["Hello, ", "World!"]
Lua, 27 bytes
Try it online!
Full program, take input as arguments.
Inspired by zsh answer, as it also use
%q
modifier to use internal safe-string engine.Also, I can think of just
but I'm not sure if this is acceptable answer.
sumber
('%q%q'):format
doesn't result in an object that can, for example, be assigned to a variable. It just causes a syntax error on its own. The colon syntax is just a shortcut for'%q%q'.format('%q%q', ...)
and Lua doesn't allow partial application for functionssed, 19 bytes
Try it online!
sumber
JavaScript (SpiderMonkey), 6 bytes
Try it online!
Input array of strings, output a single string.
Inspired by Arnauld's JSON.stringify answer.
sumber
C (gcc), 59 bytes
Thanks to Grimy for the suggestion.
Takes an array of input strings (of which "2" is the correct number for this challenge) and prints their character values, including the trailing
NUL
. Technically, the%p
formatter used byprintf
is for pointers, but it works fine for displaying hex values of arbitrary integers if you're not picky about how they look!Try it online!
sumber
Brachylog, 0 bytes
Input as an array of 2 strings, output in the format:
Z = ["{{string 1 stringified}}","{{string 2 stringified}}"]
Inspired by Arnauld's JSON.stringify answer and Doorknob's empty jq answer
Try it online!
sumber
PHP, 9 bytes
Try it online!
Input is an array of 2 strings like this:
['abc', 'def']
. Uses PHP's serialize to serialize the input into a string.sumber
Bash, 11 bytes
Try it online!
${parameter@Q}
quotes the parameter for reuse as input. In the case of an array, it quotes each element.sumber
Ruby, 12 bytes
Try it online!
sumber