Oryginał: https://james-iry.blogspot.co.at/2009/05/brief-incomplete-and-mostly-wrong.html
Alain Colmerauer zaprojektował logiczny język programowania Prolog. Jego celem było stworzenie języka programowania, który byłby tak inteligentny jak dwuletnie dziecko. Aby udowodnić, że osiągnął swój cel, przedstawił program Prolog, który odpowiada „Nie” w sposób zaradny na wszystkie zapytania.
Zapytaj mnie o cokolwiek!
? -(Oczywiście, że nie.) Twoim zadaniem jest stworzenie programu, który będzie bardziej inteligentny niż program Alaina Colmerauera. To nie musi być w Prologu.
Specyfika
Jeśli wprowadzanie kończy się na
?
i ma co najmniej jeden,
, zwracaj tekst od ostatniego,
do ostatniego?
.W przeciwnym razie, jeśli dane wejściowe zakończą się
?
zwrotemNo
.W przeciwnym razie wróć
Yes
.
Zasady
- Brak standardowych luk.
- Wejścia / wyjścia będą pobierane za pomocą naszych standardowych metod wejścia / wyjścia.
- Twój program musi przyjąć co najmniej 1 zapytanie.
- Powinieneś wysłać przetworzone zapytanie.
- W
Yes
iNo
„s jest rozróżniana w przykładach. - Masz gwarancję, że jeśli wejście zawiera a
?
, wejście będzie miało tylko jeden?
i zawsze będzie ostatnim znakiem. - Wpis zawsze będzie frazą / zdaniem. To wyrażenie / zdanie nigdy nie będzie zawierać tylko znaki
,
i?
, na przykład,
,?
i,?
nie są ważne wejścia. (Mimo że zgłoszenia i tak mogą to zaimplementować, ponieważ wyrażenie / zdanie jest w tych przypadkach pustym ciągiem). - Ponadto dane wejściowe nigdy się nie kończą
,?
. - Jeśli spacja występuje bezpośrednio po ostatniej
,
lub bezpośrednio przed nią?
, należy je uwzględnić w danych wyjściowych.
Przykłady
Hmm. -> Yes
Alright, -> Yes
Ask me anything! -> Yes
Ask me a question, please! -> Yes
Are you okay? -> No
No? -> No
Hey,does this program work? -> does this program work
Quotes in the following test cases should not be outputted.
They are used as a delimiter here.
Okay, so this does work ? -> " so this does work "
Please, add, a, test, case, containing, multiple, commas? -> " commas"
Punktacja
To jest golf golfowy , więc wygrywa najkrótsza odpowiedź w bajtach.
?
, to będzie tylko jeden i zawsze będzie to ostatni znak?You are guaranteed that if the input includes a ?, the input will only have one ? and it will always be the last character.
Dlatego te przypadki testowe są niepotrzebne.ends with ,?
jest poprawny wpis?Odpowiedzi:
05AB1E ,
2019 bajtów-1 bajt dzięki @Grimy .
Wypróbuj online lub sprawdź wszystkie przypadki testowe .
Wyjaśnienie:
Zobacz moją wskazówkę 05AB1E (sekcja Jak korzystać ze słownika? ), Aby zrozumieć, dlaczego
”€–”
jest"Not"
i”…Ü
jest"Yes"
.źródło
Python 3 , 62 bajty
Wypróbuj online!
Wyrażenie
~(','in s)*('?'in s)
ocenia na0
(tj.'Yes'
), Jeśli łańcuch nie zawiera a'?'
, w przeciwnym razie-1
(tj'No'
) jeśli łańcuch nie zawiera a','
, i w przeciwnym razie-2
(tj. Ostatnia sekcja łańcucha oddzielona przecinkami z wyłączeniem ostatniego znaku).źródło
JavaScript (ES6),
5352 bajtyWypróbuj online!
Skomentował
źródło
Węgiel ,
2322 bajtówWypróbuj online! Link jest do pełnej wersji kodu. Edycja: Zapisano 1 bajt dzięki @KevinCruijssen. Wyjaśnienie:
Czy ciąg zawiera jakieś
?
s?Czy zawiera jakieś
,
s?Podziel ciąg na
,
s i weź ostatni.Usuń
?
i wyślij wynik.Jeśli nie ma
,
s, to wypisujeNo
.Jeśli nie ma
?
s, to wypisujeYes
.źródło
Print(Join(Split(Pop(Split(q, ",")), "?"), w)
naPrint(Minus(Pop(Split(q, ",")), "?");
Minus
tym. Poza tym czułem się zadowolony z uratowania dwóch separatorów.Perl 5 +
-plF/,|\?/
, 25 bajtówWypróbuj online!
źródło
Pyth , 25 bajtów
Wypróbuj online!
źródło
Zsh , 51 bajtów
Wypróbuj online!
Bajt można zapisać, jeśli
ends with,?
i podobne są nieprawidłowe.źródło
Stax , 16 bajtów
Uruchom i debuguj
źródło
Retina ,
3228 bajtów-4 bajty z poradami od @Neil .
Wypróbuj online.
Wyjaśnienie:
źródło
K
scena Retina 1 ma wbudowany warunek? Ja nie. Prawdopodobnie może zaoszczędzić kilka bajtów.K
i warunkowo,&
aby być całkowicie szczerym. Wiem, jak używaćK
z wyrażeniem regularnym, aby dopasować w ten sposób , ale jak połączyć to z warunkowym naśladowaniem trójki, jeśli-jeszcze dlaYes
/No
?&
, co mnie zaskoczyło, i możesz po prostu dopasować ciąg, a najlepiej postać, ponieważ wiesz, że każdy?
musi być na końcu.Formuła IBM / Lotus Notes, 79 bajtów
Brak TIO dla Formula, więc ...
źródło
Python 3 ,
9887 bajtów-9 bajtów dzięki ElPedro
Wypróbuj online!
Zostało to mocno pokonane przez inne odpowiedzi, ale próbuję gry w golfa w Pythonie jeszcze trochę. Rada jest mile widziana!
źródło
if
sprawozdań do listy indeksowania zamiast a następnie skrócić warunki do wykorzystaniain
, a następnie wyrzucić to wszystko dlatego, że jest zbyt blisko istniejąca odpowiedźif x.count(",")
zif~x.find(",")
, oszczędzając jeden bajt.str.find
sprawdza,-1
czy ciąg nie zostanie znaleziony. Jeśli uzupełnisz to jednoargumentowym operatorem, spowoduje0
to tylko wtedy, gdy podciąg nie będzie obecny. Alternatywnie możesz zastąpić go oif","in x
4 bajty mniej.PHP , 58 bajtów
Wypróbuj online!
źródło
Czerwony , 78 bajtów
Wypróbuj online!
źródło
Perl 6 , 40 bajtów
Wypróbuj online!
źródło
Gema , 34 znaki
Przykładowy przebieg:
Wypróbuj online! / Wypróbuj wszystkie przypadki testowe online!
źródło
Japt , 23 bajty
Spróbuj
źródło
C # (interaktywny kompilator Visual C #) , 72 bajty
Zaoszczędzono 2 bajty dzięki @someone
Wypróbuj online!
źródło
SkipLast(1) -> Trim('?')
dla -??? bajty, o ile widzę (wszystkie moje próby obliczenia różnicy skutkują różnymi liczbami)Python 2 ,
666362 bajtyWypróbuj online!
-3 po zauważeniu zaktualizowanego wyjaśnienia „wejście będzie miało tylko jedno? I zawsze będzie ostatnim znakiem”.
-1 dzięki dzięki @ChasBrown
Zasadniczo port mojej odpowiedzi Lotus Notes . Co ciekawe, powyższe wyjaśnienie nie pomaga w odpowiedzi na uwagi, ponieważ
@Ends
jest o 4 bajty tańsze niż@Contains
. Gdyby tylko istniała@In
funkcja ...źródło
rfind
.Galaretka , 20 bajtów
Wypróbuj online!
źródło
C ++ (gcc) ,
120118 bajtówMakro funkcyjne:
Wypróbuj online!
-2 bajty dzięki @ceilingcat
źródło