Wkład
Ciąg znaków, który zawiera co najwyżej jeden z każdego z pism A
, B
oraz C
. Mogą być w dowolnej kolejności. Pusty ciąg jest prawidłowym wejściem.
Uwaga: poprzednia wersja tego wyzwania używała liter LEJ
zamiast ABC
i mogą być nadal używane w razie potrzeby.
Wydajność
Łańcuch z A
, B
, C
liter, które nie były obecne na wejściu. Mogą być w dowolnej kolejności.
Jeśli dane wyjściowe byłyby pustym łańcuchem, po prostu nie dawanie żadnego wyniku jest poprawne, jeśli ma to sens dla twojej implementacji. (np. nie musisz wywoływać print
pustego ciągu).
Przykłady
- Jeśli wejście jest,
B
wówczas wyjście powinno byćCA
alboAC
odtądA
iC
nie jest obecne na wejściu. - Jeśli wejście jest pustym ciągiem, wyjście powinno być
ABC
lub jakąkolwiek permutacją, ponieważ żadna z trzech liter nie jest obecna na wejściu. - Jeśli wejście jest,
CAB
to wyjście powinno być pustym ciągiem, ponieważ wszystkie trzy litery są obecne na wejściu.
Przypadki testowe
Jest tak mało przypadków wprowadzania danych, że możemy wyliczyć je wszystkie:
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
Podane są wszystkie prawidłowe dane wyjściowe dla każdego wejścia, oddzielone przez |
's. ""
reprezentuje pusty ciąg
Punktacja
Najkrótszy kod w bajtach wygrywa. Pamiętaj jednak, że możesz zyskać więcej uznania za rozwiązanie wyzwania w sposób wyjątkowy, a nie na krótki;)
źródło
Odpowiedzi:
Python 3,
292722 bajtów-2 bajty dzięki Jonathanowi Allanowi
-5 bajtów dzięki Rod
źródło
print(*{*"LEJ"}-{*input()})
zapisuje 2. (testowany na 3.5 i 3.6).Galaretka , 4 bajty
Dzięki @DuctrTape dla producenta o zmianie i obecności „ABC” w słowniku Jelly.
Wypróbuj online!
“ḃ»
wyszukuje wpis „ABC” w słowniku Jelly,ḟ
jest to dyada odrzutu plików, która odrzuca znaki znalezione na wejściu z tej listy znaków. Wynik zostanie domyślnie wydrukowany.W przypadku wersji z małymi literami wpis w słowniku może być „abac” (
“c»
) lub „abaca” (“i»
).Gdy wyzwaniem było „LEJ”, w wariancie wielkimi literami można było osiągnąć tylko 6 bajtów, ponieważ dla tego zestawu znaków nie istnieją wpisy słownika, co pozwala nam utworzyć listę znaków
“LEJ”
(lub ich permutację).Wariant z małymi literami lepiej zadziałał przy 5 bajtach ze względu na obecność słowa „jell” (
“ẎṄ»
).źródło
Bash + coreutils, 15 bajtów
Wypróbuj online!
Chciałbym pominąć
x
, aletr -d
nie byłoby argumentu, gdy łańcuch wejściowy był pusty. (x
Nie wyrządza to żadnej szkody, ponieważ nie ma żadnych znaków x w tym łańcuchu LEJ.) Normalnie bym napisałtr -d "$1"
, ale robienie tego tak, jak zrobiłem, jest o jeden bajt krótsze.źródło
Siatkówka , 14 bajtów
Liczba bajtów zakłada kodowanie ISO 8859-1.
Wypróbuj online!
Wyjaśnienie
Dodaj drugi wiersz zawierający
ABC
.Deduplikuj postacie. Spowoduje to usunięcie każdego znaku z drugiego wiersza, który już pojawia się w pierwszym wierszu.
Odrzuć pierwszą linię.
źródło
1`
część etapu antypoślizgowego?1
ogólnie oznacza „wykonaj X tylko raz”. To, jak dokładnie działają ograniczenia (tj. X), zależy od typu używanego stołu montażowego. W przypadku etapów antyrepresyjnych Retina najpierw sprawdza, które linie pasują do wyrażenia regularnego (tutaj każda linia, ponieważ wyrażenie regularne jest puste), ale następnie limit oznacza „odrzuć tylko pierwszą pasującą linię”. Podobnie, jeśli byłby to etap grep, oznaczałoby to „zachowaj tylko pierwszą pasującą linię”. Semantyka wszystkich limitów jest wymieniona na wiki .05AB1E ,
64 bajtówZaoszczędzono 2 bajty, używając nowego
žR
polecenia, zgodnie z sugestią Kevina CruijssenaWypróbuj online! lub jako pakiet testowy
Wyjaśnienie
źródło
J
zwracaćEL, LE
?"""{input}"""
, co działa również w przypadku pustych ciągów :).LE
).Java 7,
7358 bajtów15 bajtów zapisanych dzięki @KritixiLithos .
Kod testowy:
Wypróbuj tutaj.
Wydajność:
źródło
"["+s+"]"
zamiasts.replaceAll("(.)","$1|")
?EJL
), działa ponownie, co jest wciąż znacznie krótsze. :)Właściwie 7 bajtów
Wypróbuj online!
źródło
Pyth, 5 bajtów
Sprawdź to tutaj
Rozwija się do
źródło
<G3
MATL,
108 bajtówZaoszczędził dwa bajty dzięki Suever.
setdiff
jest krótszy niżismember
.Wypróbuj tutaj!
Wyjaśnienie
Tak, to mogło być trywialne zadanie, ale jestem całkiem zadowolony, że udało mi się to rozwiązać samodzielnie za pomocą MATL-a. Nigdy nie powiedziałem, że to najkrótsze rozwiązanie ... Dzięki, Suever!
źródło
JavaScript ES6,
41 3938 bajtówZaoszczędź 2 bajty dzięki Arnauldowi. Zaoszczędzono 1 bajt dzięki LarsW.
źródło
s=>eval`'ABC'.replace(/[${s}]/g,'')`
.join``
zaoszczędzić dwa znaki nad roztworem I wymyślił:f=s=>"ABC".replace(RegExp(`[${s}]`,'g'),"")
.V , 10 bajtów
Wypróbuj online!
Hexdump:
Wyjaśnienie
Dane wejściowe znajdują się w pierwszym wierszu bufora. Więc coś takiego:
a kursor znajduje się na pierwszym znaku. Usuwamy więc dane wejściowe (które przechowują je w rejestrze
"
) i jednocześnie wchodzimy w tryb wstawianiaC
.W trybie wstawiania znaki
LEJ
są wstawiane, po czym wracam do trybu normalnego za pomocą<ESC>
.Teraz musimy usunąć wszystkie znaki, które są obecne na wejściu.
A gdy to się stanie, pozostaniemy z pozostałymi literami w buforze.
źródło
Ruby,
27 1918 bajtów-1 bajt dzięki Martin Ender
źródło
Haskell ,
2726 bajtówWypróbuj online! Zastosowanie:
("ABC"\\) "CB"
plony"A"
.\\
jest operatorem ustawionej różnicy, nawias tworzy tak zwaną sekcję, która jest krótką formą dla lamdy(\x -> "ABC" \\ x)
.Bez importu: (ta sama liczba bajtów dzięki @nimi)
Wypróbuj online! Zastosowanie:
f "CB"
plony"A"
.Inne podejścia:
źródło
(\\)
wkrótce zostanie przeniesiony do Preludium.Data.Set.difference
.(\\)
nie szanuje tego. Typy danych, które są przeznaczone do tego zachowania, mają strukturę, która sprawia, że są one generalnie nieco bardziej wydajne, bezpieczniejsze (ponieważ nie można złamać ewentualnych założeń dotyczących stabilności itp.) I zapewniają wygodniejszy interfejs.GNU sed ,
3429 bajtówObejmuje +1 dla
-r
-5 dzięki Digital Trauma
Wypróbuj online!
Z jakiegoś powodu TIO nie działa z rozszerzonym wyrażeniem regularnym (
-r
), więc musiałem zawinąć go w BASH.źródło
-n
iP
są niepotrzebne. Możesz także zakończyć to w bash, aby działało w TIO. Nie mam pojęcia, dlaczego-r
nie działa. tio.run/nexus/bash#DcmxDYAwDATA/qdIR4JELCjp7F8jooIFCPubb@/…Brain-Flak , 120 + 3 = 123 bajty
Jest uruchamiany z
-c
flagą, dodając 3 bajtyWypróbuj online!
Wyjaśnienie
Ogólnie rzecz biorąc, ten program właściwie ustawia prawy stos minus lewy stos, a prawy stos jest inicjowany,
CBA
a lewy stos inicjowany do wejścia.Kod z adnotacjami
Więcej wyjaśnień w przyszłości ...
źródło
Mathematica, 37 bajtów
źródło
Characters
Marchewka , 15 bajtów, niekonkurująca
niekonkuruje z powodu błędu, który znalazłem przy zwracaniu dopasowań i pustych ciągów. Właśnie to naprawiłem
Wypróbuj online!(kopiuj wklej)
Wyjaśnienie
źródło
CJam , 7 bajtów
Wypróbuj online! (Jako zestaw testów oddzielony od linii).
źródło
MATLAB / Octave, 20 bajtów
Demo online
źródło
Oktawa,
2927 bajtówZaoszczędził dwa bajty dzięki Suever, tworząc ciąg
'ABC'
wismember
wywołaniu.Używamy
~ismember()
jako logicznych wskaźników dla zmiennejx
. Osobliwe jest to, że tworzymyx='ABC'
wewnątrzismember
, a nie przed nim. Kolejność Octave widzi to:źródło
C #,
50 bajtów32 bajty47 bajtów35 bajtówgdzie
i
jest wejście:Pełna aplikacja przetestowana w LINQPad
Wyniki testów
źródło
string.Join("",...)
->string.Concat(...)
Oszczędza 1 bajtAPL, 7 bajtów
~
jest ustawione odejmowanie,∘
jest komponowane, więc jest to funkcja zwracającaABC
minus znaki na wejściu.źródło
Meduza , 9 bajtów
Wypróbuj online!
W bardziej konwencjonalnej notacji program ten przekłada się na:
I
jest wejściem,N
różnicą listy iP
wyjściem.źródło
Perl 5,9,9
79 38 3735 bajtów(nie jestem pewien zasad liczenia tutaj - uwzględniły przełączniki, ale nie polecenie perl).
(skorygowane zliczenia po komentarzu o orzeczeniu poniżej)
źródło
-l
flagę). :)perl -pe'$_=eval"ABC=~y/$_//dr"'
tylko 23 bajty (22 + 1 dla-p
).Common Lisp, 71 bajtów
Największy w tej chwili wpis, ale przynajmniej jest czytelny ;-)
źródło
Japt ,
1312 bajtówOszczędność bajtu dzięki produktom ETH.
Wypróbuj online!
źródło
Pyth, 4 bajty
Wypróbuj tutaj!
Zauważ, że używa małych liter, które mogą być nie do przyjęcia
źródło
C, 53 bajty
Jeśli niejawne deklaracje string.h nie są dozwolone, 72 bajty , aby dodać
#include<string.h>
Wypróbuj online!
lub coś bardziej zabawnego przy 75 bajtach
Wypróbuj online!
źródło
Partia, 101 bajtów
Pobiera dane wejściowe STDIN, co oznacza, że
%1
jest pusty, gdy kod wpada do podprogramu pomocnika i nic nie jest drukowane.źródło
R ,
4740 bajtówWypróbuj online!
Zastępuje wszelkie litery w ciągu wejściowym pustym ciągiem.
źródło