Memasukkan
Sebuah string yang berisi paling banyak satu dari masing-masing huruf A
, B
dan C
. Mereka mungkin dalam urutan apa pun. String kosong adalah input yang valid.
Catatan: Versi sebelumnya dari tantangan ini menggunakan huruf dan LEJ
bukan ABC
dan mereka masih dapat digunakan jika diinginkan.
Keluaran
Sebuah string dari A
, B
, C
huruf yang tidak hadir dalam input. Mereka mungkin dalam urutan apa pun.
Jika output akan menjadi string kosong maka tidak memberikan output valid, jika itu masuk akal untuk implementasi Anda. (mis. Anda tidak perlu benar-benar memanggil print
string kosong.)
Contohnya
- Jika inputnya
B
maka output harusCA
atauAC
karenaA
danC
tidak ada dalam input. - Jika input adalah string kosong maka output harus
ABC
atau permutasi karena tidak ada dari ketiga huruf yang ada dalam input. - Jika inputnya
CAB
maka output harus berupa string kosong karena ketiga huruf ada dalam input.
Uji Kasus
Ada begitu sedikit kasus masukan yang dapat kami sebutkan semuanya:
in -> out1 | out2 | out3 | ...
ABC -> ""
ACB -> ""
BCA -> ""
BAC -> ""
CAB -> ""
CBA -> ""
AB -> C
AC -> B
BC -> A
BA -> C
CA -> B
CB -> A
A -> BC | CB
B -> CA | AC
C -> AB | BA
"" -> ABC | ACB | BCA | BAC | CAB | CBA
Semua output yang valid untuk setiap input diberikan, dipisahkan oleh |
's. ""
mewakili string kosong
Mencetak gol
Kode terpendek dalam byte menang. Namun perlu diingat bahwa Anda mungkin mendapatkan lebih banyak pengakuan untuk menyelesaikan tantangan dengan cara yang unik daripada dengan cara yang singkat;)
sumber
Jawaban:
Python 3,
292722 byte-2 byte terima kasih kepada Jonathan Allan
-5 byte terima kasih kepada Rod
sumber
print(*{*"LEJ"}-{*input()})
menghemat 2. (diuji pada 3.5 dan 3.6).Jelly , 4 byte
Terima kasih kepada @DuctrTape untuk dorongan tentang perubahan dan kehadiran "ABC" dalam kamus Jelly.
Cobalah online!
“ḃ»
mencari entri "ABC" dalam kamus Jelly,ḟ
adalah angka dua membuang filer yang membuang karakter yang ditemukan dalam input dari daftar karakter. Hasilnya dicetak secara implisit.Untuk versi huruf kecil, entri kamus yang digunakan dapat berupa "abac" (
“c»
) atau "abaca" (“i»
).Ketika tantangannya adalah "LEJ" hanya 6 byte yang dapat dicapai dalam varian huruf besar, karena tidak ada entri kamus dengan set karakter tersebut, meninggalkan kami untuk membuat daftar karakter
“LEJ”
(atau permutasi daripadanya).Varian huruf kecil lebih baik pada 5 byte karena kehadiran kata "jell" (
“ẎṄ»
).sumber
Bash + coreutils, 15 byte
Cobalah online!
Saya ingin menghilangkan
x
, tetapi kemudiantr -d
akan kehilangan argumen ketika string input kosong. (Tidakx
ada salahnya, karena tidak ada x di sini-string LEJ.) Saya biasanya menulistr -d "$1"
, tetapi melakukannya dengan cara yang saya lakukan adalah satu byte lebih pendek dari itu.sumber
Retina , 14 byte
Hitungan byte mengasumsikan penyandian ISO 8859-1.
Cobalah online!
Penjelasan
Tambahkan baris kedua yang berisi
ABC
.Gandakan karakter. Ini menghapus setiap karakter dari baris kedua yang sudah muncul di baris pertama.
Buang baris pertama.
sumber
1`
kerja tahap antigrep?1
umumnya berarti "hanya lakukan X sekali". Bagaimana tepatnya membatasi kerja (yaitu apa X) tergantung pada jenis tahap yang Anda gunakan. Untuk tahap antigrep, Retina terlebih dahulu memeriksa garis mana yang cocok dengan regex (di sini, setiap baris, karena regex kosong), tetapi kemudian batasnya berarti "hanya membuang garis yang cocok pertama". Demikian pula, jika itu adalah tahap grep itu berarti "hanya menjaga baris yang cocok pertama". Semantik semua batas tercantum di wiki .05AB1E ,
64 byteDisimpan 2 byte menggunakan
žR
perintah baru seperti yang disarankan oleh Kevin CruijssenCobalah online! atau sebagai Test Suite
Penjelasan
sumber
J
kembaliEL, LE
?"""{input}"""
, yang juga berfungsi untuk string kosong :).LE
).Java 7,
7358 byte15 byte disimpan berkat @KritixiLithos .
Kode uji:
Coba di sini.
Keluaran:
sumber
"["+s+"]"
bukans.replaceAll("(.)","$1|")
?EJL
) berfungsi lagi, yang masih jauh lebih pendek. :)Sebenarnya , 7 byte
Cobalah online!
sumber
Pyth, 5 byte
Uji di sini
Perluas ke
sumber
<G3
MATL,
108 byteDisimpan dua byte berkat Suever.
setdiff
lebih pendek dariismember
.Coba di sini!
Penjelasan
Ya, ini mungkin tugas yang sepele, tapi saya cukup puas saya berhasil menyelesaikannya dengan MATL sendirian. Saya tidak pernah mengatakan itu adalah solusi terpendek ... Terima kasih Suever!
sumber
JavaScript ES6,
41 3938 BytesDisimpan 2 byte berkat Arnauld. Disimpan 1 byte berkat LarsW.
sumber
s=>eval`'ABC'.replace(/[${s}]/g,'')`
.join``
menghemat dua karakter atas solusi saya datang dengan:f=s=>"ABC".replace(RegExp(`[${s}]`,'g'),"")
.V , 10 byte
Cobalah online!
Hexdump:
Penjelasan
Input ada di baris pertama buffer. Jadi sesuatu seperti:
dan kursor berada pada karakter pertama. Jadi kami menghapus input (yang menyimpannya dalam register
"
) dan masuk ke mode insert secara bersamaanC
.Setelah dalam mode penyisipan, karakter
LEJ
dimasukkan, setelah itu saya kembali ke mode normal menggunakan<ESC>
.Sekarang kita harus menghapus semua karakter yang ada di input.
Dan begitu ini terjadi, kita akan tinggal dengan huruf-huruf yang tersisa di buffer.
sumber
Ruby,
27 1918 byte-1 byte terima kasih kepada Martin Ender
sumber
Haskell ,
2726 byteCobalah online! Penggunaan:
("ABC"\\) "CB"
hasil"A"
.\\
adalah operator perbedaan set, tanda kurung membentuk bagian yang disebut yang merupakan bentuk pendek untuk lamda(\x -> "ABC" \\ x)
.Tanpa impor: (jumlah byte yang sama berkat @nimi)
Cobalah online! Penggunaan:
f "CB"
hasil"A"
.Pendekatan lain:
sumber
(\\)
akan segera dipindahkan ke Prelude.Data.Set.difference
.(\\)
menghormati semua ini. Tipe data yang dimaksudkan untuk perilaku ini memiliki struktur yang membuat mereka secara umum sedikit lebih efisien, lebih aman (karena tidak ada stabilitas, dll. Asumsi dapat dipatahkan) dan memperlihatkan antarmuka yang lebih nyaman.GNU sed ,
3429 byteTermasuk +1 untuk
-r
Terima kasih untuk Trauma Digital
Cobalah online!
Untuk beberapa alasan TIO tidak bekerja dengan regex diperpanjang (
-r
), jadi saya harus membungkusnya dalam BASH.sumber
-n
danP
tidak perlu. Anda juga dapat membungkusnya dengan bash untuk membuatnya bekerja di TIO. Tidak tahu mengapa-r
tidak berhasil. tio.run/nexus/bash#DcmxDYAwDATA/qdIR4JELCjp7F8jooIFCPubb@/…Brain-Flak, 120 + 3 = 123 bytes
It is run with the
-c
flag, adding 3 bytesTry it online!
Explanation
Overall this program pretty much does the right stack set minus the left stack with the right stack initialized to
CBA
and the left stack initialized to the input.Annotated Code
More explanation to come...
sumber
Mathematica, 37 bytes
sumber
Characters
Carrot, 15 bytes, non-competing
non-competing because of a bug I found with returning matches and empty strings. So I just fixed it
Try it online! (copy & paste)
Explanation
sumber
CJam, 7 bytes
Try it online! (As a linefeed-separated test suite.)
sumber
MATLAB / Octave, 20 bytes
Online Demo
sumber
Octave,
2927 bytesSaved two bytes thanks to Suever, by creating the string
'ABC'
, inside theismember
call.We use
~ismember()
as logical indices to the variablex
. The peculiar thing is, we createx='ABC'
insideismember
, not in front of it. The order Octave sees this:sumber
C#,
50 Bytes32 Bytes47 Bytes35 Byteswhere
i
is the input:Full app tested in LINQPad
Test results
sumber
string.Join("",...)
->string.Concat(...)
Saves 1 byteAPL, 7 bytes
~
is set subtraction,∘
is compose, so this is a function that returnsABC
minus the characters in its input.sumber
Jellyfish, 9 bytes
Try it online!
In more conventional notation, this program translates to:
I
is the input,N
is list difference, andP
is output.sumber
Perl 5.9.9
79 38 3735 bytes(not sure of the counting rules here - have included switches but not the perl command).
(adjusted counts after adjudication comment below)
sumber
-l
flag). :)perl -pe'$_=eval"ABC=~y/$_//dr"'
for only 23 bytes (22 + 1 for-p
).Common Lisp, 71 bytes
The largest entry at the moment, but at least it is readable ;-)
sumber
Japt,
1312 bytesSaved a byte thanks to ETHproductions.
Try it online!
sumber
Pyth, 4 bytes
Try it here!
Note this uses lower case which might not be acceptable
sumber
C, 53 bytes
If implicit declarations of string.h are not allowed, 72 bytes, to add
#include<string.h>
Try it online!
or something a bit more fun at 75 bytes
Try it online!
sumber
Batch, 101 bytes
Takes input on STDIN, which means that
%1
is empty when the code falls through into the helper subroutine and nothing gets printed.sumber
R,
4740 bytesTry it online!
Replaces any letters in the input string with the empty string.
sumber