Twoim zadaniem jest napisanie dwóch programów. Program A nie może drukować niczego na wszystkich wejściach, z wyjątkiem sytuacji, gdy wprowadzony jest program B , w którym to przypadku powinien wydrukować 1
. Program B musi drukować 1
na wszystkich wejściach, z wyjątkiem sytuacji, gdy wprowadzony jest program A , w którym to przypadku nie powinien nic drukować.
Punktacja:
- +1 za każdą postać z obu programów.
- Najniższy wynik wygrywa.
Odpowiedzi:
GTB , 25
Wykonane z kalkulatora TI-84
Program
A
Program
B
Wyjaśnienie
`_
Wpisz ciąg@_eq;"
Sprawdź, czy jest on równy kodowi źródłowemu (#
jest automatycznie usuwany wraz z małymi literami)$w;&
Jeśli tak, wyświetl 1 (w przeciwnym razie nic) [B
ponieważ$#w;&
- jeśli nie, wyświetl 1 (w przeciwnym razie nic)]źródło
Bash - 32 znaki
Skrypt A - 16 znaków
Skrypt B - 16 znaków
Stosowanie
źródło
Ruby, 54
ZA
b
przykłady:
źródło
J (62)
Ponieważ nie zabroniłeś tego ...
Zapisz programy jako
A
iB
odpowiednio odpowiednio.Program A (30):
Program B (32):
Jak to działa (program B, A jest podobny):
1!:1[3
: przeczytaj standardowe1!:1<'A'
: przeczytaj plikA
-:
: sprawdź, czy są równe-.
: zaneguj wynik#~
: sam powiel wynik (więc1
daje jeden1
i0
daje zero0
s, tzn. nic)echo
: wynikexit
: exit (interpreter J nie kończy domyślnie po osiągnięciu końca pliku)źródło
Haskell - BEZ źródła ładowania - 478
644znakówZakłada się, że getContents ZAWSZE kończy się nową linią, więc upuszcza końcową postać bez sprawdzania, ponieważ nie mam ochoty jej uciekać
ZA
b
Działa jak standardowy quine, ale zamienia - na *, aby uzyskać inny program (unikając znaków gdzie indziej).
Następujące testy są drukowane zgodnie z oczekiwaniami (zamieniając main = interact $ na a = ib =)
-
źródło
Python 2.7 - 82
Plik A (dosłownie nazwany po prostu
a
):Plik B (dosłownie nazwany po prostu
b
):źródło
.py
- czy to w ogóle działa?python a
.touch a
, utworzysz pusty plik, jeśli masz uprawnienia. Aby uzyskać dodatkową okrutną zabawę, możesz nawet zrobić,touch \~
który tworzy plik o nazwie z jedną tyldą (~
) - a następnie obserwuj, jak ktoś głupio próbuje go usunąć;)Ruby, 166 znaków, brak źródła czytania
ZA:
B:
Upewnij się, że twój edytor tekstu nie oszczędza z końcowym znakiem nowej linii.
Zastosowanie (przykład):
Każdy program konstruuje źródło drugiego programu za pomocą HEREdoc i przekształca ciąg znaków, a następnie porównuje wynik z danymi wejściowymi.
źródło
p
jest wbudowaną metodą ruby, która drukuje przekazane do niej argumenty, a następnie zwraca te argumenty, dzięki czemu jest przydatna w przypadku gry w golfa. Po wywołaniu bez argumentów zwraca zero. Argumentemgets
jest separator, więc przekazaniep
powoduje separator zerowy, co oznacza, że odczytuje STDIN, dopóki nie dotrze do EOF. Wyrażenie heredoc jest<<2
, więc kończy się na (i nie obejmuje) 2 na końcu pliku.2
jako ogranicznika heredoc jest tradycyjnym kawałkiem zaciemnienia. Może to być prawie każdy ciąg.Haskell - 138
Niezbyt dobra odpowiedź, ale chciałem, aby oba programy korzystały z tego samego źródła. Można zapisać niektóre znaki, zmieniając nazwę pliku, ale to nie sprawi, że będzie to zwycięskie rozwiązanie, więc nie sądzę, żeby było warto.
Skompiluj to źródło zarówno jako, jak
A
iB
.Test:
źródło
A
, a następnie kopiowaćA
doB
?Node.js - 142 znaki
Skrypt
|
(znany również jako Skrypt A) - 80 znakówSkrypt
&
(znany również jako Skrypt B) - 62 znakiStosowanie
Opis
Skrypt B odczytuje zawartość skryptu A i analizuje go po zamianie nazw plików i
and
operatora naor
.Nazwałam pliki
&
i|
tak mogę wykonać pojedynczy zastąpić w skrypcie B.źródło
Python 3-102 znaków
Wyświetla 1, jeśli dane wejściowe są takie same jak program 2, w przeciwnym razie nic:
Wyświetla 1, jeśli dane wejściowe nie są takie same jak program 1, w przeciwnym razie nic:
źródło
bash / grep - 59 znaków
51 znaków, jeśli policzymy tylko rzeczywisty ciąg programu.
źródło
R (62 znaków)
produkuje:
Meta komentarz: R targi stosunkowo słabo kodują, ponieważ nie ma skrótu do
function
...źródło