Napisz funkcję zawierającą pięć wierszy.
Jeśli uruchomisz funkcję taką, jaka jest, powinna zwrócić 0.
Jeśli usuniesz jeden z pięciu wierszy i uruchomisz funkcję, powinna ona powiedzieć, która z linii została usunięta (np. Jeśli usuniesz ostatnią linię, powinna ona zwrócić 5).
Zwartość, nowość i elegancja zasługują na uwagę. Wygrywa najwyżej ocenione rozwiązanie (po rozsądnym czasie).
popularity-contest
function
jawns317
źródło
źródło
Odpowiedzi:
Rubin
Unikanie magicznych liczb, ponieważ nie jest to golf golfowy.
Każda linia usuwa z niej swój własny numer
1^2^3^4^5
. Jest to Ruby, więc ostatni wiersz określa wartość zwracaną.źródło
JavaScript (
13477696560 znaków)→ demo na żywo ←
wywołaj tę funkcję przy n = 10.
Poprzednie wersje:
65 znaków
(musi być wywołany przy n = 15)
69 znaków
(musi być wywołany przy n = 15)
77 znaków
134 znaki
nie golfa
źródło
var a
poreturn
? Teoretycznie nie należy tego osiągnąć.Pyton
Jeśli parametry są dozwolone, to zadziała:
źródło
R
Funkcja wykorzystuje wbudowane „stałe” i przypisuje każdemu z nich inną wartość. Jeśli wszystkie te zmienne są równe nowej wartości, funkcja zwraca 0. Wartości logiczne są przekształcane na wartości liczbowe z powodu operatorów matematycznych. Nawiasy wokół czwartej linii pozwalają na wyraźne zwrócenie wyniku (jeśli jest to ostatnie polecenie).
źródło
Lua 5.2+
55 znaków w ciele funkcji z wyłączeniem znaków nowej linii. Nie mogłem wymyślić nic lepszego oprócz tego:
Mając nadzieję na dodatkowe punkty za nadużywanie komentarzy: P
Powodem, dla którego nie działa w 5.1 jest to, że zagnieżdżone
[[]]
zostały usunięte, aw 5.1 powoduje błąd kompilacji zamiast ignorowania go tak, jak to robi 5.2.return 7-2-5
return 1
return 7-5
return 7-2-2
return 7-2-1
return 7-2
źródło
Rubin
Próbowałem to zrobić z operacjami bitowymi, a potem zdałem sobie sprawę, że istnieje znacznie prostsze rozwiązanie z wykorzystaniem list! Najlepszym rozwiązaniem tego wyzwania jest język programowania, który automatycznie zwraca ostatnią wyświetlaną wartość, na przykład Ruby.
źródło
Befunge nie ma wyraźnych funkcji, ale oto, co nazwałbym funkcją w Befunge:
Pierwszy i ostatni wiersz to początek i koniec funkcji. Robi to najbliżej „powrotu”, czyli wypycha poprawną wartość na stos.
źródło
Nowa odpowiedź
Znalazłem inne rozwiązanie. To bardzo źle, bardzo podobała mi się matematyka. To rozwiązanie wykorzystuje rekurencję i zmienne globalne (fuj!), Aby stwierdzić, czy każda linia została uruchomiona, czy nie. Chciałem zrobić coś innego niż inne rozwiązania, więc nie jest to zbyt eleganckie, ale działa poprawnie :)
PHP
Naprawdę podobało mi się to wyzwanie, dziękuję! :)
Stara odpowiedź
Rozwiązałem to za pomocą matematyki. Jeśli każda zmienna jest postrzegana jako nieznana i robimy jedną deklarację w wierszu, istnieje pięć niewiadomych i pięć wierszy kodu: to prowadzi nas do następującego systemu 5x5:
Kiedy znalazłem wartości, zakodowałem je na stałe i dodałem kilka podstawowych rzeczy.
PHP
Uwaga: Stara odpowiedź nie będzie działać, jeśli pozostanie bez zmian.
źródło
wosk pszczeli , 86 bajtów
Wypróbowanie mojego pierwszego wymyślonego esolangu. Po początkowym zamieszaniu odkryłem, że rozwiązanie jest takie proste.
Wyjaśnienie:
Programy wosku pszczelego działają na sześciokątnej siatce 2D. Programy są przechowywane w formacie prostokątnym.
jest przechowywany jako
Instrukcje poruszania się w określonych kierunkach to:
Krótkie wyjaśnienie
_1 p
Utwórz adres IP, dodaj 1, a następnie przekieruj adres IP do wiersza 2_^v>~2+p
Utwórz kolejny adres IP, na wypadek braku linii 1, spowolnij adres IP, aby upewnić się, że adres IP z pierwszej linii jest naprzód, a następnie dodaj 2, a następnie przekieruj do linii 3> >~3+p
Dodaj 3, a następnie przekieruj do wiersza 4> >~4+X@7~8+~@$^^{;
Dodaj 4, następnie ustaw 2. wartość pierwszego stosu na 15, następnie XOR najwyższą wartość i 2. wartość, spowolnij IP (aby upewnić się, że IP w linii 5 jest przed nami, jeśli linia 5 istnieje) i wyślij wynik, a następnie zakończ program.> >~5+@7~8+~@${;
Dodaj 5, a następnie zrób to samo, co w wierszu 4, z wyjątkiem spowolnienia.Zasadniczo program po prostu oblicza sumę xor 15
Dodatkowe
>
wiersze od 3 do 5 po prostu gwarantują, że jeśli brakuje jednej z linii od 2 do 4, adres IP nadal zostaje poprawnie przekierowany i nie opuszcza programu.Możesz sklonować mój interpreter wosku pszczelego, napisany w Julii, z mojego repozytorium GitHub
Plik Readme na GitHub jest bardziej aktualny i ma lepszą strukturę niż strona esolangs.
źródło
MuPAD, 57 znaków
źródło
Wspólny LISP:
Uwaga: Posiadanie końca nawiasu we własnej linii jest uważane za zły styl, ale ponieważ inne języki mają
end
i}
zakładam, że jest to dozwolone.źródło
Bash, 131 znaków
Wszystko jest proste do linii 5. Następnie musi wykryć, czy ostatnia linia zniknęła. Wykorzystuje to dozwolone parametry funkcji, wywołując się rekurencyjnie, raz, aby przetestować swoją własną wartość sukcesu, gdy powiedziano jej, że zawiedzie na linii 5, a jeśli linia 5 zostanie usunięta, linia 4 powróci
5
.(Uwaga: przy usuwaniu wszystkiego oprócz funkcji, porzucaniu białych znaków i zmianie / bin / bash na / bin / sh) jest to minimum 131 znaków
źródło
JavaScript
źródło