Code Golf
Całkowicie prawdziwa historia: jestem wykonawcą pracującym na stronie internetowej www. Sky.Net i jednym z naszych zadań jest stworzenie samoświadomego programu lub czegoś takiego, nie wiem, czy tak naprawdę nie słuchałem szefa. W każdym razie, aby uczynić nasz kod bardziej samoświadomym, potrzebujemy IT, aby wiedzieć, jaki kod znajduje się na każdym numerze linii.
Wyzwanie
Utwórz program lub funkcję, która pobiera dane wejściowe n
i zwraca kod wspomnianego programu lub funkcji w trybie online n
.
Zasady
➊ Twój program lub funkcja musi mieć co najmniej 4 linie. Każda linia musi być unikalna.
May Możesz założyć, że wejście zawsze będzie dodatnią liczbą całkowitą większą lub równą 1 i mniejszą lub równą liczbie linii w twoim programie / funkcji.
➌ Pierwszy wiersz w programie / funkcji to wiersz 1, a nie wiersz 0.
➍ Nie można uzyskać dostępu do pliku, w którym znajduje się program. (Jeśli ktoś musi zapytać „Czy to nie jest technicznie łamanie zasady nr 4”; prawdopodobnie tak jest)
➎ Linie nie mogą być puste (obejmuje spację, jeśli spacje nic nie robią w twoim języku)
➏ Linie nie mogą być // komentarzami (/ * dowolnego stylu <!)
Jest to wyzwanie podobne do quine.
To jest golf golfowy , więc wygrywa zgłoszenie z najmniejszą liczbą bajtów!
Odpowiedzi:
Vim, 7 bajtów
Wypróbuj online!
O ile wiem, jest to zgodne ze wszystkimi zasadami. W vimie domyślnie pusty program wypisuje wszystkie dane wejściowe. Od
Jest noop, nic nie zmienia tekstu wejściowego, a ponieważ każde wejście pasuje do pożądanego wyniku, to samo podejście działa z dowolną liczbą wierszy.
źródło
Rubin,
717066 bajtówWypróbuj online!
Tryb „Cheating”: 7 + 1 = 8 bajtów
Wymaga
-p
flagi dla +1 bajtu. Dosłownie kopia V odpowiedź . Drukuje wprowadzoną liczbę; cały program jest po prostu bezoperacyjny.źródło
-p
zrobić?$_
, uruchamia zawartość programu, a następnie drukuje zawartość screena$_
(powtarzając w wierszu STDIN). Ponieważ program nic nie robi, jest to po prostu Unixcat
, ale oznacza to, że każde wejście od 1-4 wyświetli zawartość linii, ponieważ każda linia jest dosłownie numerem linii.-p
, ale1\n2\n3\n4
nie jest prawidłowym programem Perla.Haskell,
6959 bajtówOparty na standardowej Quine Haskell. Pierwsze wyrażenie (rozłożone na pierwsze trzy wiersze) to nienazwana funkcja, która wybiera n-ty wiersz z łańcucha quinified
s
(s++show s
). +2 bajty do uczynienia indeksowania opartym na 1 (imho niepotrzebna reguła).Aby wypróbować online! wersja Muszę nazwać funkcję, która dodaje 4 bajty.
źródło
PowerShell ,
184172 bajtyWypróbuj online!
Wyjaśnienie
Zaczyna się od utworzenia tablicy
$v
w pierwszym wierszu. W tym samym wierszu ustawiony jest pierwszy (0
th) element0
, a przecinek,
kontynuuje definicję.Następny wiersz ustawia następny element (
1
) tablicy na ciąg znaków reprezentujący zawartość pierwszego wiersza skryptu, dzięki czemu$v[1]
zwraca pierwszy wiersz.Trzeci wiersz najpierw ustawia trzeci element tablicy (indeks
2
) na ciąg znaków reprezentujący drugi wiersz skryptu, a następnie w tym samym wierszu ustawia czwarty element (indeks3
) za pomocą fragmentu kodu używającego operatora formatu (-f
) do zamiany niektóre wystąpienia pojedynczych cytatów ([char]39
) i ciąg formatu szablonu w sobie, aby odtworzyć całość trzeciego wiersza.Wiersz 4 w zasadzie robi to samo, ale także kończy tworzenie tablicy, a następnie indeksuje ją za pomocą dostarczonego argumentu.
źródło
Python 2,
1047367 bajtówDziękujemy Jonathanowi Allanowi za uratowanie 6 bajtów!
Edycja: Ta sama liczba bajtów, ale bardziej podoba mi się to rozwiązanie
Wypróbuj online!
Wersja Rubinowa Value Ink w języku Python .
Starsza odpowiedź (67 bajtów):
źródło
n
: TIOCJam ,
191817 bajtówWypróbuj online!
Oparty na standardowej CJam-quine.
{...}_~
Uruchamia...
w bloku się na stosie (w tym przypadku także1
poniżej). Następnie wykonujemy:źródło
PHP, 261 bajtów
Wypróbuj online !!
Zakodowany ciąg to:
źródło
Perl, 52 bajty
To prosta odmiana klasycznego quine
„Ładowność” to
split
na nowej linii, a poprawna linia jest wybierana przez indeksowanie do wynikowej listy.Perl,
4948 bajtów (niekonkurencyjny)38 bajtów dla kodu (z wyłączeniem shebang, ale włącznie
-d:A
) plus 10 bajtów dla nazwy pliku, która musi byćDevel/A.pm
.Devel
Katalog musi być@INC
.Z technicznego punktu widzenia narusza to zasadę nr 4, ponieważ
-d:A
powoduje dwukrotne parsowanie pliku, więc jest to rozwiązanie niekonkurujące.Używa haka debugera, aby uzyskać dostęp do linii pliku, który perl przechowuje w
@{"_<$filename"}
tablicy w czasie kompilacji.źródło