Biorąc pod uwagę dwa ciągi, wypisz trzeci ciąg, który nie jest równy jednemu z dwóch wejść, ale ma taką samą długość (w znakach) jak jedno z wejść. Gwarantowane jest co najmniej jedno prawidłowe wyjście.
Przypadki testowe
Przypadki testowe są cytowane, aby pokazać, że są łańcuchami. Wyjścia są jednymi z wielu możliwych.
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"
Zasady
- Możesz wybrać domenę wejściową, ale musi ona składać się przynajmniej z drukowalnego ASCII, a twoja domena wyjściowa musi być taka sama jak domena wejściowa.
- Długości wejściowe mogą być takie same lub różne.
- Dane wyjściowe muszą być prawidłowe z prawdopodobieństwem 1; to znaczy, możesz generować losowe ciągi, dopóki jeden nie będzie poprawny (i teoretycznie możesz nieskończoną pętlę), ale nie możesz po prostu wyprowadzić losowego ciągu i mieć nadzieję, że jest on poprawny. Pamiętaj, że oznacza to, że dane wyjściowe nie muszą być deterministyczne.
- Automatyczne końcowe znaki nowej linii są dozwolone, ale nie liczą się do długości wyniku.
- Ze względu na pytania dotyczące błędów pamięci musi działać w ciągu 60 sekund do długości wejściowej wynoszącej
6
. Odpowiedź, która działa na to i teoretycznie działa na dłuższe ciągi, jest OK, ale coś, co Błędy pamięci na nowoczesnym komputerze dla długości wejściowej4
są nieprawidłowe.
To jest golf golfowy , więc wygrywa najkrótsza odpowiedź w bajtach.
Odpowiedzi:
05AB1E ,
87 bajtówWykorzystuje kodowanie 05AB1E . Wypróbuj online!
źródło
Haskell, 43 bajty
Bierze ciąg max (leksykograficznie później), który, jak wiemy, jest niepusty; zamienia wszystkie znaki na „a”, „b” i „c” przy użyciu
<$
; i zwraca pierwszą, która nie jest żadnym z danych wejściowych. Myślę, że jest to podobne do odpowiedzi Neila na węgiel drzewny i / lub odpowiedzi CJam geokavela .(Czaiłem się już przez jakiś czas, ale po raz pierwszy odpowiadam na tej stronie; cześć!)
źródło
Brainfuck, 97 bajtów
Uruchom kod online (zwróć uwagę, że „pamięć dynamiczna” musi być wybrana w prawym dolnym rogu)
Niesamowite wyzwanie! Pomyślałem, że to będzie trywialne, ale ostatecznie bardzo trudne. Ciągle do niego wracam, ponieważ wydaje mi się, że powinno być jakieś eleganckie 20-bajtowe rozwiązanie BF. W tym momencie jestem całkiem szczęśliwy, że (pozornie) udało mi się w ogóle pracować w BF.
Dane wejściowe są traktowane jako
str1
+\0
+str2
, gdzie ciągi znaków to kolejne niezerowe znaki 1-bajtowe.Powraca
(first str1 + first str2) or (first str1 + 1) or 2
. Algorytm ten wymyślił genialny @ ØrjanJohansen (przypuszczalnie) oparty na moim (zepsutym) oryginalnym.Skomentowano:
źródło
a=2
,b=1
. Musisz dodać zamiast odejmować.S
pusty problem, dodając>
na początku, a później robiąc[<]>
lewy bajtS
- jeśli to niezerowe, to nic nie robi, w przeciwnym razie zmienia łańcuchy.b
. Ale niea
.!= a
tylko, jeśli wydrukujęS/0, S/1, ...
zamiastS/0, F/1, ...
tego powinno działać.Galaretka , 8 bajtów
Wypróbuj online!
W jaki sposób?
źródło
B
TIOX
aniẊ
tam ...Python 3 ,
6247575451 bajtówEdycja: - 5 bajtów dzięki @ Mr.Xcoder
Edycja: +10 bajtów, aby naprawić błąd
Edycja: -3 bajty dzięki @betaveros
Edycja: -3 bajty przy użyciu max zamiast pop
Wypróbuj online!
źródło
{"a","b","c"}
==>{*"abc"}
( 57 bajtów )(x[1:]or y[1:])
==>max(x,y)[1:]
?(x or y)[1:]
uważam, że wystarczy uniknąć pustego łańcucha.{*"abc"}
{*`id`}
*len(x or y)
zamiast+max(x,y)[1:]
.Węgiel drzewny , 22 bajty
Wypróbuj online! Link jest do pełnej wersji kodu. Generuje wszystkie ciągi wielkich liter powtarzane do długości dłuższego wejścia i drukuje wszystkie te, które nie pojawiają się na wejściu. Innymi słowy, dane wyjściowe są normalnie,
ZZZ...
chyba że jest to jedno z danych wejściowych, w którym to przypadku nie jestYYY...
to dane wejściowe, w którym to przypadku sąXXX...
.źródło
Mathematica, 111 bajtów
wypróbuj online (wklej kod za pomocą Ctrl + V, umieść dane wejściowe na końcu i naciśnij Shift + Enter)
Wejście
thanx @Nie drzewo do sprawdzania i gry w golfa -21 bajtów
źródło
Perl 6 ,
3830 bajtówWypróbuj online!
Anonimowy blok kodu, który pobiera dane wejściowe jako listę dwóch ciągów znaków i zwraca pierwszą liczbę z
1111...
niepustą liczbą 1 sekund, których nie ma na wejściu.Wyjaśnienie:
źródło
long long
niestety używa .Zsh ,
51473736 bajtów-4 bajtów za pomocą wbudowanego tablicy
argv
, -10 bajtów za pomocą usuwania prefiksu iRC_EXPAND_PARAM
, -1 bajt przez inline ekspansję nawiasów.Wypróbuj online!
Po pierwsze, było to niesamowite wyzwanie. Zanim wylądowałem na tym, wpadłem na mnóstwo pomysłów.
@
i*
nie są identyfikatory, tak${ :|@}
i${ :|*}
nie działa, stąd wykorzystanie${ :|argv}
Zsh ,
4847 bajtów *Wypróbuj online!
Zupełnie nowa metoda dzięki uprzejmości JoLinga w Perlu 6, ale nie działa na dużych ciągach (n> 20) z powodu ograniczeń wielkości całkowitych.
$@[(I)$i]
jest odwrotnym wyszukiwaniem tablicy do największego indeksu, wyświetli zero (fałsz w interpretacji arytmetycznej), jeśli $ i nie zostanie znalezione w parametrach wiersza poleceń.źródło
MATL , 12 bajtów
Dane wejściowe to tablica komórek zawierająca ciągi znaków drukowalnych ASCII. Dane wyjściowe są tworzone z liter
'ABC'
, a zatem należą do domeny wejściowej.Wypróbuj online!
Wyjaśnienie
Dane wyjściowe są tak długie, jak najdłuższy ciąg wejściowy. Jego n- ty znak jest pierwszą literą,
'ABC'
która różni się od n-tego znaku obu ciągów wejściowych.źródło
Haskell,
565248 bajtówWypróbuj online!
Wymień pierwszy char z maksymalnie dwóch ciągów wejściowych z
a
,b
ac
i wybrać pierwszy z nich, który różni się od obu ciągów wejściowych.źródło
Rubin , 53 bajty
Wypróbuj online!
Zasadniczo generuje ciągi
a...a
,b...b
orazc...c
i wybiera pierwszy nie na wejściu.źródło
ES6, 54 bajty
źródło
Pyth, 7
8bajtów1 bajt dzięki Jakube
Zestaw testowy
Używamy
.T
transpozycji zachowującej długość, zamiastC
obcięcia transpozycji, dzięki czemu działa ona na wejściach, w których jeden ciąg jest pusty.Biorąc pod uwagę dwa ciągi jako krotkę, transponujemy je (
.T
), następnie odwzorowujemy wynikową parę znaków lub pojedynczy znak, odejmując znak (i) od alfabetu niższego za pomocą-LG
, a następnie transponujemy wynikową listę ciągów nieużywanych znaków za pomocąC
, a następnie zwracamy pierwszy taki ciąg zh
. Składa się z pierwszej litery alfabetycznie, która nie jest w żadnym ciągu, dla każdej pozycji.źródło
Java (OpenJDK 8) ,
10073 bajtów-27 bajtów dzięki magicznemu dotykowi @ Nevay! :)
Wypróbuj online!
Domena wejściowa = kod ASCII do wydruku + punkt kodowy 127.
źródło
Rubinowy, 56 bajtów
źródło
Pyth ,
2322 bajtówWypróbuj tutaj!
Pyth , 22 bajty
Pakiet testowy!
Wyjaśnienie
źródło
Perl 5,
8279 bajtówPobiera dane wejściowe jako dwa osobne argumenty i zwraca trzeci ciąg.
Podprogram próbuje utworzyć łańcuch bardzo podobny do pierwszego łańcucha, ale z pierwszym nie-
z
znakiem zastąpionym przezz
. Następnie zajmuje się przypadkami narożnymi, zamieniając pierwszy znak nay
lubx
, w razie potrzeby, jeśli stwierdzi, że jedno z danych wejściowych było w rzeczywistości sekwencją wszystkichz
.źródło
Perl 5 , 68 bajtów
Wyjaśnienie:
Zaczynając od „a” s unikano zwiększania do punktu, w którym Perl wydłuża ciąg; z tylko dwoma ciągami znaków, aby uniknąć bycia tym samym, nie mógł się przepełnić.
Wykonaj z:
źródło
C (gcc) ,
7065736761 bajtówFunkcja wymaga, aby dostarczone ciągi były modyfikowalne (tj. Albo tablice, albo dynamicznie przydzielane).
Wypróbuj online!
Działa dla standardowego zakresu ASCII
Wyjaśnienie:
źródło
*a==255
i*b==0
?R,
8967 bajtów@Giuseppe zapisał 9 bajtów, @ user2390246 zapisał 13 bajtów
funkcjonować
próbny
źródło
x
iy
w ramach tego samegosubstr
polecenia. Również nawiasy klamrowe ireturn
są niepotrzebne:function(x,y)sub("^.",letters[!letters%in%substr(c(x,y),1,1)][1],x)
return
ponieważ jest to funkcja, a nawiasy klamrowe, ponieważ jest to jedna wkładka.f("","1")
plony""
są równe pierwszemu wejściowi ... może to powinno być dodane jako kolejny przypadek testowyJava 8, 119 bajtów
Lambda (curry) od
String
do lambda odString
doString
. Przypisz doFunction<String, Function<String, String>>
.Wypróbuj online
Niegolfowana lambda
To rozwiązanie obraca losowe znaki ASCII na dłuższy ciąg, dopóki nie zostaną spełnione wymagane warunki. Wejściami są UTF-8, a wyjściami ASCII.
Nie znam drobnych szczegółów Unicode, ale wydaje mi się prawdopodobne, że to rozwiązanie może się nie powieść, gdy dołączony
char
dołączy poprzedni punkt kodowy, tworząc jedną jednostkę kodu. Jeśli ktoś, kto wie więcej na ten temat, może to zweryfikować, zmienię domenę wejściową na ASCII.Java 8, 126 bajtów
Taki sam typ jak powyżej.
Wypróbuj online
Niegolfowana lambda
To zwiększa pierwszy bajt dłuższego łańcucha, zawijając w ASCII, dopóki nie zostaną spełnione wymagane warunki. Wejścia i wyjścia są ciągami ASCII.
źródło
APL (Dyalog Unicode) , 11 bajtów SBCS
Pełny program przyjmuje dane wejściowe jako 2-elementową listę zagnieżdżoną.
Wypróbuj online!
źródło
Bash,
115.. 77 bajtówZamienia pierwszy znak pierwszego (niepustego) ciągu wejściowego na 1,2,3, dopóki nie zostanie znalezione dopasowanie do żadnego z danych wejściowych. Wypróbuj online!
-9, -12, -9, -8 bajtów wszystko dzięki GammaFunction
(całkiem poprawa w stosunku do oryginału ... )
źródło
=
iw||
ostatnim wierszu, i użyj,${x:-empty_fallback}
aby usunąć początkową trójkę. Potrzebujesz także cudzysłowu na końcowym echu w przypadku spacji końcowych. Obowiązkowe TIOshift
, mam go związać moją metodę w dwóch różnych metod .@($1|$2)
dopasowanie wzoruPerl 5 , 79 + 1 (-p) = 80 bajtów
Wypróbuj online!
źródło
Japt , 17 bajtów
Powtarza litery
A-Z
na długości dłuższego wejścia, usuwa wartości na wejściu i pobiera pierwszy element z tablicy.Wypróbuj online!
Stare rozwiązanie, 18 bajtów
Wypróbuj online!
Wybiera losowy znak z alfabetu i powtarza go do długości dłuższego ciągu wejściowego, dopóki nie będzie obecny na wejściu.
źródło
["abcdefghijklmnopqrstuvwxyz", "AAAAAAAAAAAAAAAAAAAAAAAAAA"]
. Gdy uruchomiłem go wiele razy, wrócił"AAAAAAAAAAAAAAAAAAAAAAAAAA"
(tak jak moja odpowiedź w Pyth, dopóki tego nie naprawiłem)Ì
powinien działać zamiastg1
2-bajtowego zapisywania (w tablicy 2-elementowejg1
=gJ
), ale wydaje się, że występuje błądÌ
podczas używania;
.J
to nie jest już powód-1
z powodu;
zmiany na,
. Właśnie dlatego użyłem1
w pierwszej kolejności.Python 3,
7473 bajty-1 bajt dzięki Step Hen
Wyświetla najniższą liczbę całkowitą o tej samej długości co pierwsze z wejść o niezerowej długości.
źródło
i
jako domyślny parametr funkcji:def f(x,y,i=1):
. Myślę, że możesz zaoszczędzić kolejny bajt,while10*i
ale nie jestem pewien.while i*10<10**len(x or y)or str(i)in x+y
zwhile i<10**~-len(x or y)or str(i)in x+y
( 72 bajtów )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 bajtów )Python 2, 77 bajtów
Myślę, że ma pewien potencjał. Chodzi o to, że dodaje 1 do 1. znaku w 1. ciągu, a następnie sprawdza, czy 1. znak drugiego wejścia jest taki sam.
** Uwaga, ^ nie obsługuje ciągów o długości 0, więc tak naprawdę nie działa na tej długości.
Oto bardzo długie rozwiązanie, które działa z zerową długością
146 bajtów
Wszelkie ulepszenia będą mile widziane!
źródło
CJam,
313023 bajtówPobiera ASCII do wydruku jako dane wejściowe. Zwraca ciąg zer, 1 lub 2 o tej samej długości, co jeden z ciągów wejściowych. Logika jest taka, że jednym z nich nie może być żaden z ciągów wejściowych!
Wypróbuj online
źródło
:+!
.C # (mono) , 94 bajty
Wypróbuj online!
źródło