Twoim zadaniem jest stworzenie programu, który wykona następujące czynności:
- Powinieneś wziąć numer. (Dodatni, ujemny, możliwy jest ułamek)
- Jeśli jest ujemny, odwracasz quine. i zaneguj tę liczbę (zostań dodatnia)
- Następnie powtarzasz <część całkowitą numeru wejścia> i drukujesz pierwsze <piętro (część ułamka liczby wejścia * długość)> ze swojego programu źródłowego. Jeśli jest liczbą całkowitą, część ułamkowa ma wartość zero.
-10% bonusu, jeśli twój program nie jest palindromem.
Przykład
Jeśli twój program to „ABCDEFG”, to
1.
5
ABCDEFGABCDEFGABCDEFGABCDEFGABCDEFG
Wyjaśnienie
ABCDEFG pięć razy
2)
-2
GFEDCBAGFEDCBA
Wyjaśnienie
GFEDCBA (odwrócona ABCDEFG) 2 razy
3)
7.5
ABCDEFGABCDEFGABCDEFGABCDEFGABCDEFGABCDEFGABCDEFGABCDEFGABC
Wyjaśnienie
ABCDEFG 7 razy, a następnie ABC (pierwsze 3 (piętro (0,5 * 7) = piętro (3.5) = 3) litera na ABCDEFG)
4
-0.3
GF
Wyjaśnienie
GFEDCBA (odwrócona ABCDEFG) 0 razy, a następnie GF (pierwsze 2 (podłoga (0,3 * 7) = podłoga (2,1) = 2) litera na GFEDCBA (odwrócona ABCDEFG))
5
0
<empty>
Wyjaśnienie:
<pusty> tutaj oznacza, że twój program się nie wyświetla. Jest to zero razy ABCDEFG, który jest zdefiniowany jako pusty ciąg.
-
i.
ręcznie (reprezentujący frakcję jako dodatnich liczb całkowitych). Lub możesz zwrócić uwagę na kolejne wyzwanie. ;) (Nie każdy język może brać udział w każdym wyzwaniu, ale dopóki wyzwanie nie wyklucza umyślnie poszczególnych języków, to jest w porządku. Pomyśl tylko o wszystkich wyzwaniach przetwarzania audio / obrazu lub systemu plików.)Odpowiedzi:
CJam,
2826 bajtów * 0,9 = 23,4Dzięki Sp3000 za oszczędność 2 bajtów.
Sprawdź to tutaj.
Wyjaśnienie
źródło
Vitsy, 34 * 0,9 = 30,6 bajtów
Dzięki @ Sp3000 za wskazanie błędu w moim kodzie!
Zabiegać. Mój nauczyciel fizyki przypomniał mi, że mam funkcje mocy, które mi w tym pomogą. Domyśl.
źródło
Perl, 104 bajty - 10% = 93,6
102 bajty + 2 bajty dla
-i
- 10% za brak bycia palindromem. Dane wejściowe są przekazywane jako argument do-i
(np.-0.3
Powyżej).Jak to działa
To rozwiązanie opiera się na następującej quine:
Działa to w następujący sposób. Najpierw ustaw
$_
ciąg:Następnie zadzwoń
eval
, który$_
domyślnie działa . Wywołuje toprint
z jednym argumentem, dosłownym ciągiem:Ponieważ ten ciąg jest podwójny, zmienne są interpolowane. Po interpolacji
$_
wartość ciągu wynosi:Po wydrukowaniu powoduje to:
który jest kodem źródłowym samego programu.
Zaletą tego quine jest to, że możesz osadzić dowolny kod wewnątrz łańcucha, aby był
eval
„d.Oto podział pełnego rozwiązania:
źródło
Mathematica, 139–10% = 125,1 bajtów
Zwróć uwagę na spację końcową. Białe znaki, standardowa notacja itp. Są wynikiem
ToString[#0, InputForm]
.źródło
Haskell, 158 * 0,9 = 142,2 bajtów
Funkcja quine.
źródło
Python 2, 193 bajty - 10% = 173,7
Wystąpiły błędy
0
, ale ignorując STDERR, nadal otrzymujesz puste dane wyjściowe.źródło