Mniej więcej rok temu, 31 grudnia 2015 roku, wpadłem na pomysł, że:
Klamka łaskawie zebrała postacie ze społeczności PPCG i zapewniła im bezpieczeństwo przez rok.
Aż 74 osób uczestniczyło więc mamy spiffing 74 druku ASCII postaci do zabawy!
Oto 74 znaki ciągu kapsuły czasowej 2016 w kolejności, w jakiej zostały przesłane:
H@~*^)$.`~+1A|Q)p~`\Z!IQ~e:O.~@``#|9@)Tf\eT`=(!``|`~!y!`) Q~$x.4|m4~~&!L{%
Oto 74 znaki ciągu kapsuły czasowej 2016 w kolejności ASCII (uwaga wiodąca):
!!!!!#$$%&())))*+...1449:=@@@AHILOQQQTTZ\\^`````````eefmpxy{||||~~~~~~~~~
To nie jest dużo do pracy, ale tutaj lubimy wyzwania.
Wyzwanie
Aby określić, który język jest „najlepszy” za pomocą ciągu kapsuły czasowej, będziemy mieli 6 (na 201 6 ) wyzwań, które zwiększają trudność, przy czym w każdym z nich należy użyć podzbioru 74 znaków kapsuły czasu.
Posiadanie 6 różnych wyzwań pomaga konkurować większej liczbie języków, ale tylko najlepsze języki będą w stanie odpowiedzieć na wszystkie z nich i uzyskać wysoką ocenę.
Punktacja:
- Każde wyzwanie będzie oceniane od 0 do 74 w zależności od liczby użytych postaci.
- Wyższe wyniki są lepsze.
- Jeśli Twój język nie może ukończyć wyzwania, Twój wynik za to wyzwanie wynosi 0.
- Każdy niepusty podzbiór wyzwań może zostać ukończony.
- Twój końcowy wynik to suma wyników ze wszystkich 6 wyzwań.
- Najlepszy możliwy wynik końcowy to 6 × 74 lub 444 .
Wyzwania
1. Uruchom
Jeśli kod języka nie może działać w pierwszej kolejności, nie będzie w stanie nic zrobić.
Napisz najdłuższy możliwy program (używając tylko 74 znaków kapsuły czasu, pamiętaj), który działa / wykonuje się bez błędów kompilacji i czasu wykonywania.
Nie ma znaczenia, co robi program, nie ma znaczenia, czy ma wejście / wyjście lub wchodzi w nieskończoną pętlę, liczy się tylko to, że działa bez błędów. (Ostrzeżenia są w porządku, podobnie jak błędy spowodowane złym wprowadzeniem użytkownika).
Komentarze są dozwolone, więc może to być tak proste jak
#H@~*^)$.`~+1A|Q)p~`\Z!IQ~e:O.~@``|9@)Tf\eT`=(!``|`~!y!`) Q~$x.4|m4~~&!L{%
w Pythonie za wynik 74.
(Nie bój się odpowiedzieć, jeśli jest to jedyne wyzwanie, które Twój język może wykonać, ale nie oczekuj też dużej liczby głosów).
Wynik = długość programu (dłuższy program jest lepszy)
2. I / O
Język, który nie ma formy wejścia lub wyjścia, jest prawie tak samo bezużyteczny, jak język, który nie może działać.
Biorąc pod uwagę drukowalny znak ASCII od !
(0x33) do }
(0x7D) włącznie, wypisz drukowalny znak ASCII przed nim i po nim.
Dane wyjściowe mogą mieć długość dwóch łańcuchów lub list albo znaki oddzielone spacją lub znakiem nowej linii.
Na przykład, jeśli dane wejściowe to }
dane wyjściowe to |~
lub ["|", "~"]
lub | ~
lub |\n~
.
Podobnie, "
jest wyjściem dla !
i AC
jest wyjściem dla B
.
Wynik = 74 - długość programu (krótszy program jest lepszy)
3. Rozgałęzienie
Warunki warunkowe są często wymogiem kompletności Turinga , co często jest wymogiem przydatności języka.
Biorąc pod uwagę dodatnią liczbę całkowitą, jeśli kończy się cyframi dziesiętnymi, 16
zmień na 6
a 7
i wyślij wynik; w przeciwnym razie wyprowadzaj dane wejściowe bez zmian. Jeśli chcesz, możesz użyć ciągów wejściowych / wyjściowych.
Przykłady:
2016 -> 2017
16 -> 17
116 -> 117
1616 -> 1617
6 -> 6
15 -> 15
17 -> 17
106 -> 106
2106 -> 2106
Wynik = 74 - długość programu (krótszy program jest lepszy)
4. Pętla
Język, który nie potrafi wykonywać pętli, odradza się powtarzający się kod, tak żmudny, że musisz na chwilę przerwać programowanie.
Biorąc pod uwagę dodatnią liczbę całkowitą, wyślij kwadrat ASCII-art o tej długości boku wypełniony wzorem koncentrycznych mniejszych kwadratów, który na przemian między dowolnymi dwoma wyraźnymi drukowalnymi znakami ASCII . Nie muszą to być te same dwa znaki dla różnych danych wejściowych.
Na przykład:
1 <- input
X <- output
2
XX
XX
3
XXX
X-X
XXX
4
XXXX
X--X
X--X
XXXX
5
YYYYY
Y...Y
Y.Y.Y
Y...Y
YYYYY
6
XXXXXX
X----X
X-XX-X
X-XX-X
X----X
XXXXXX
7
ZZZZZZZ
Z-----Z
Z-ZZZ-Z
Z-Z-Z-Z
Z-ZZZ-Z
Z-----Z
ZZZZZZZ
Wynik = 74 - długość programu (krótszy program jest lepszy)
5. Matematyka
Język, który nie jest dobry z liczbami i matematyką, może równie dobrze być dla kierunków humanistycznych.
Nie przyjmuj danych wejściowych, ale wyślij 72 dzielniki liczb całkowitych z 2016 r. , Dodatnie i ujemne, w dowolnej kolejności. Dane wyjściowe można sformatować jako ciąg lub listę w rozsądny sposób.
Przykład:
-1, -2, -3, -4, -6, -7, -8, -9, -12, -14, -16, -18, -21, -24, -28, -32, -36, -42, -48, -56, -63, -72, -84, -96, -112, -126, -144, -168, -224, -252, -288, -336, -504, -672, -1008, -2016, 1, 2, 3, 4, 6, 7, 8, 9, 12, 14, 16, 18, 21, 24, 28, 32, 36, 42, 48, 56, 63, 72, 84, 96, 112, 126, 144, 168, 224, 252, 288, 336, 504, 672, 1008, 2016
Wynik = 74 - długość programu (krótszy program jest lepszy)
6. Ezoteryzm
(Nie, nie to .) My w PPCG lubimy nasze ezoteryczne rzeczy , a quines jest tego dobrym przykładem.
Napisz najdłuższy możliwy quine, zgodnie ze zwykłymi zasadami quine . Quine to program, który nie pobiera żadnych danych wejściowych i wyjściowych.
Wynik = długość programu (dłuższy program jest lepszy)
Szczegółowe zasady
- W każdym z 6 wyzwań twój program musi być podzbiorem 74 znaków kapsuły czasowej ułożonych w dowolny sposób. Może to być pusty podzbiór lub niewłaściwy podzbiór , więc każdy Twój program może mieć tylko 0 i 74 znaki.
- Pojedynczy znak nowej linii na końcu wejścia / wyjścia / kodu jest w porządku wszędzie, ponieważ niektóre języki tego wymagają lub nie można tego łatwo uniknąć.
- O ile nie określono inaczej, każde wyzwanie może zostać wykonane jako funkcja lub pełny program zgodnie z naszymi domyślnymi ustawieniami .
- Wszystkie wyzwania muszą być ukończone w tym samym języku.
- Musisz użyć języka (lub wersji języka) utworzonego przed 2017 r. W dowolnym miejscu na Ziemi .
- Każdy może odpowiedzieć, niezależnie od tego, czy dodałeś postać do kapsuły czasu, czy nie.
Możesz używać postaci z kapsuły czasu 2016 w swoich własnych wyzwaniach.
źródło
6×74 or 444
nie jest to możliwe, ponieważ oznaczałoby to puste programy, które zachowują się inaczej. dlatego 442 jest faktycznym minimum, ponieważ oznacza to, że dwa z 3 programów pobierających dane wejściowe mają w sobie znakOdpowiedzi:
Glif , 74 + (74 - 36) = 112
1. Uruchom (74 bajty)
2. IO (36 bajtów)
Wyjaśnienie
Glif wydawał się dość dobrym wyborem do tego wyzwania, ponieważ nie dba o to, jakie postacie zostaną użyte. Zamiast tego patrzy na grupy czterech znaków i wybiera polecenie na podstawie wzorca powtarzania tych czterech znaków. Ponieważ istnieje wiele duplikatów w ciągu kapsuły czasowej, jesteśmy dość elastyczni w programach, które możemy pisać, z wyjątkiem tego, że ograniczamy się do programów składających się z 18 poleceń (co nie jest dużo w Glypho). Chociaż pozwoliło mi to dość łatwo rozwiązać dwa pierwsze problemy, wątpię, aby Glypho mógł obsłużyć pozostałe z tak małą liczbą postaci.
Przetestowałem je przy użyciu interpretera Java pobranego z 2006-06-23 na maszynie , która używa nieco innego mapowania poleceń:
Program Run tłumaczy się na:
Gdzie
...
są jakieś śmieci, których nie zawracałem sobie głowy tłumaczeniem.Program IO przekłada się na:
Oto, co to robi:
źródło
CJam, 74 + (74–14) + (74–26) = 182 punktów
1. Uruchom (74 bajty)
Przejście
e#
na przód komentuje całą linię.2. I / O (14 bajtów)
Dennis zapisał 8 bajtów.
Wyjaśnienie:
3. Rozgałęzienie (26 bajtów)
Wyjaśnienie:
Zobaczę później. ( EDYCJA : Wątpię, czy są możliwe, bez literałów blokowych lub łańcuchowych… może matematyczne?)
źródło
9`)ZH*+~):Q(Q)
.J, wynik 71 + (74–19) = 126
Zadanie 1, długość 71
To definiuje czasownik
AHILO
jako wnętrze. Nie używany:Nie sądzę, że istnieje sposób na przedłużenie tego czasu.
Zadanie 3, długość 19
Sposób na wykonanie tego zadania bez ograniczeń
+16=100|]
brzmi następująco:Mamy
+
,=
i kilka kopii lub|
w naszej dyspozycji, a to łatwo obejść]
, ale numery są bardziej problematyczne. Oto pierwsza część, która oblicza wejście modulo 100:Po tym, skończmy z tym, stwórzmy liczbę 16. Najprostszym sposobem jest
*~4
(4 razy pomnożone przez siebie), ale już użyliśmy,*
więc jest to zabronione. Zamiast tego dokonamy pewnych manipulacji tablicowych.Praca
2)
Jest to zdecydowanie niemożliwe. Jedyne sposoby manipulowania wartości znaków są
a.
au:
, a my mamy dostęp do żadnego z nich.Jeśli moglibyśmy użyć
a
zamiast, powiedzmy,A
to byłoby to rozwiązanie:Najtrudniejszą częścią tego, aby to zadziałało, było uzyskanie liczby -1.
4
Generuje to kształt łuski, ale nie mogę znaleźć sposobu na generowanie postaci. Niestety.
5
Wprawdzie wydaje się to najłatwiejszym zadaniem do wykonania w J. Jednak bez
i.
tego będzie to dość trudne.6
Jest to prawdopodobnie niemożliwe bez fałszywego quinu
449
lub czegoś takiego, ponieważ ciąg kapsułek nie zawiera cudzysłowów ani żadnego innego sposobu wytwarzania ciągów J.źródło
Q{~1+I.~&Q=:a.
daje kolejny znak: wiązania alfabetua.
doQ
, znaleźć indeks wejściu w nią zI.
, dodać jeden i indeks doQ
. Spróbuj. Jedynym pozostałym problemem jest produkowanie-1
...+16=100&|
. Musisz jakoś wyprodukować 16 i 100.+($@#~@$~4)=1e4|&%:*~
To było bardzo irytujące, ponieważ mamy tylko jedno(&=:+*
i dwa4
.Q{~(*^.4%9 1)+I.~&Q=:a.
Zrozumiałem, że logarytm^.
podaje liczby ujemne dla danych wejściowych ściśle między 0 a 1, i mamy%
do produkcji ułamków i*
do uzyskania wyników do -1 i 1.PowerShell - łączny wynik: 74
1. Run - Wynik: 74
Ponieważ jest to niezwykle trudne w programie PowerShell (o ile wiem, każda możliwa metoda uzyskania danych wejściowych jest niemożliwa), przynajmniej zdecydowałem o losowaniu pierwszego wyzwania, więc nie wszyscy kopiujemy przykład bezpośrednio z postu.
Oto losowy generator odpowiedzi 1 wyzwanie (dla języków, w których
#
jest komentarz):Wypróbuj online!
źródło
$^
to „pierwszy token poprzedniej linii w sesji”, który byłby bardzo ograniczony i bardzo prawdopodobne, że będzie to poważne zakłócenie standardowych reguł we / wy.$^
jest pusty w nowej sesji.memy , wynik (
6265 + 70) 1351: Uruchom
Usunąłem wszystkie backticks (
`
) i operatory matematyczne. Konfliktowali, ponieważ nie było wystarczającej liczby, aby zadowolić każdego operatora jednoargumentowego i binarnego. Zostawiłem trochę, co daje +3 bajty . Wynikowy program:Nie mam pojęcia, dlaczego i jak to działało. Przynajmniej nie zgłasza żadnego wyjątku czasu wykonywania w języku C #, a zatem nie ulega awarii.
6: Quine
Wiesz, gdyby gdzieś te 74 znaki
-
zawierały małe lub małe literyq
, byłoby to zbyt łatwe. Przynajmniej cieszę się z tegoI
operatora.Ten kod nie jest do końca oczywisty. Oto wyjaśnienie:
Ciągi ułamkowe (np.1/4
) Są wyświetlane z I na końcu, aby dokładnie to wskazać.I
Operator jest zwykle bezużyteczne, dodałem go za pomocą innych środków, ale hej, to działa w ten sposób!Powyższy kod jest nieprawidłowy. Głupie, że nie widziałem, aby 74 znaki nie zawierały jednego operatora podziału, forwardslash (
/
). Wpadłem na coś innego:Wyjaśnienie:
Dane wyjściowe
True
(z powodu sposobu, w jaki C # obsługujeBoolean.ToString()
wielkie i nie małe litery). Nie jestem pewien, czy to jest właściwe quine, tymczasem wciąż łamię sobie głowę za prawidłowy, naprawdę właściwy i intuicyjny.Mógłby również rozwiązać problemy We / Wy i matematyczne, ale brakuje mi określonych żetonów (znaków), które nie są zawarte w 74 znakach.
źródło
Brainfuck, 74 bajty
Po prostu musiałem.
Wyjaśnienie:
Każda postać, która nie jest prawidłową postacią Brainfuck, jest traktowana jako komentarz. Jedyny kod, który faktycznie uruchamia się, to:
Nie powoduje to wydruku, ponieważ ani 0, ani 1 nie są znakami drukowalnymi w ASCII. Nie powoduje to jednak błędu, więc z powodzeniem wykonujemy pierwsze wyzwanie.
źródło
Mathematica, ocena 62
Byłbym zaskoczony, gdyby ktokolwiek mógł zmusić wyzwania 2-6 do pracy w Mathematica. Oto najlepsze, co zrobiłem z wyzwaniem 1:
Definiuje całkiem głupią funkcję
A
o stałej wartości. 12 nieużywanych znaków to:źródło
Oktawa, wynik 74
1. Uruchom
50 z tych znaków jest częścią funkcji, a pozostałe 24 nie.
Co to robi:
x =@(AHILOQQQTTZeefmpy)
tworzy funkcję,x
która może przyjmować zmiennąAHILOQQQTTZeefmpy
jako dane wejściowe.Aby zrozumieć resztę:
a||b
wywołuje funkcjęall()
na obua
ib
. Jeśli jeden lub oba z nich zwrócą wartość true,||
operator zwróci wartość true.!a
i~a
oznacza to samo tutaj, oboje sąnot(a)
.a.^b
jest mocą elementarną(a(1)^b(1), a(2)^b(2) ...)
Dalsze wyjaśnienia
Będę skracał każdy z tych kroków:
I:
Istnieje parzysta liczba
not
, więc jest to odpowiednik tego,not(not(4))
który jesttrue
lub1
.Reszta jest komentowana.
źródło
*> <> , łączny wynik = 74
1. Uruchom, zdobądź 74
Wypróbuj tutaj!
To było niezwykle trudne bez
;
postaci. Właściwie myślałem, że będzie to niemożliwe przez kilka chwil, dopóki nie zobaczyłem%
, że w zasadzie zrezygnowałem.Jest to również prawidłowy program> <>.
Wyjaśnione (pominięto nieistotne części)
Wyzwania
Mogę spróbować innych wyzwań ... byłyby bardzo trudne i mogą wymagać dziwnego naginania zasad, ale swobodne korzystanie z
|
luster i!
trampolin powinno umożliwić przynajmniej jedno wyzwanie.Wyzwania te są szczególnie trudne, ponieważ nie wolno nam wyprowadzać żadnych wyników za pomocą *> <> (
o
in
), a nawet wywołań funkcji (C
), zwrotów funkcji (R
) lub terminatorów programów (;
). Mimo że brakuje nam równieżi
danych wejściowych, nadal możemy umieścić dane wejściowe na stosie, co jest plusem. Kolejnym plusem jest to, że otrzymujemy pojedyncząp
instrukcję, która pozwala nam zastąpić instrukcję w pudełku kodowym. Może być to możliwe do wielokrotnego użycia (jeszcze nie wymyślono praktycznego sposobu), co sprawiłoby, że inne programy wydawałyby się bardziej możliwe (ponieważ bylibyśmy w stanie wygenerować dwie lub więcej instrukcji).źródło
Haskell, ocena 63
1. Uruchom:
Nie są używane
)))```````{
. Komentarze w Haskell są--
lub{- ... -}
, więc nie ma łatwej wersji z wszystkimi komentarzami.Ten kod definiuje operator infix,
!!!!!#$$%&*+...:@@@\^||||~~~~~~~~~
który przyjmuje dwa argumenty:fmpxyAHILOQQQTTZ
który jest ignorowany i dlatego może być dowolnego typue
, która musi być funkcją przyjmującą dwie liczbyW funkcji ciało
e
jest następnie stosowane do 14 i 49, używając`
notacji -infix.Przykład użycia:
Operator jest stosowany do
()
pustej krotki i(*)
operatora mnożenia, więc14*49 = 686
jest obliczany.Wypróbuj online!
Inne wyzwania
Wątpię, czy jakiekolwiek inne wyzwanie jest możliwe, szczególnie ze względu na brak możliwych nazw zmiennych, które mogą pojawić się dwukrotnie, co jest tylko
e
(lub coś w tym rodzajueQT
), ponieważ nazwy zmiennych nie mogą zaczynać się wielką literą. Oczywiście posiadanie tylko jednego=
nie pomaga.źródło
Pyth, na razie 131 (ukończone 2 wyzwania)
1. Uruchom, 74
Ten program nie pobiera danych wejściowych i nie tworzy danych wyjściowych.
Ten program używa
$$
, co pozwala na wykonanie dowolnego kodu, dlatego jest zbanowany online, więc ten program działa online. Oto dane wyjściowe kompilacji, dzięki czemu możesz zobaczyć, co faktycznie zostanie uruchomione:Pisanie programu z dowolnymi znakami, które nie zawierają błędów w Pyth, jest dość trudne. Postawiłem sobie dodatkowe wyzwanie polegające na wymaganiu, aby program działał również bez potrzeby wprowadzania danych przez użytkownika.
Pierwszym krokiem jest
#
zjedzenie wszystkich błędów. Następnie musimy uniknąć błędów spowodowanych przez~
,I
iL
, z których każdy ma swoje własne dane. Osiąga się to poprzez umieszczenie ich wewnątrz$$
, co osadza je w kompilacji wyjściowej, a tym samym poddaje je regułom kompilacji Pythona, a nie Pythowi. Wreszcie, aby uniknąć wprowadzania danych przez użytkownika, różne znaczniki arity 0 (Zmienne i podobne) są umieszczane na końcu, aQ
s są przenoszone do$$
bloku.2. IO
Będzie to niezwykle trudne, jeśli to w ogóle możliwe. Żadna z funkcji Pytha, które tworzą dowolne ciągi znaków lub znaki, nie jest obecna, z wyjątkiem tego
.f
, że naprawdę źle wykonuje tworzenie dowolnych znaków.3. Rozgałęzienie: 74–17 = 57
Wypróbuj online
Odpowiednikiem programu Pyth byłby:
Ten kod pobiera mod wejściowy 100, porównuje go z 16, a następnie używa trójskładnika, aby wybrać między wejściem a wejściem plus jeden. Z powodu ograniczeń postaci dokonałem pewnych zmian:
Zamiast
?
, trójskładnikowego, kiedyś|&
,or
potemand
, który ma taką samą funkcjonalność, oprócz tego, że łamie jeśli wejście jest zero, ale ponieważ mamy zagwarantowane wejście dodatnia, to w porządku. (Można to naprawić bez dodatkowych znaków, ale w ten sposób jest to prostsze).Zamiast bezpośrednio porównywać te dwie liczby, biorę ich XOR
x
, który wynosi zero, jeśli i tylko jeśli są równe, zgodnie z życzeniem.Zamiast pisać
100
bezpośrednio, generuję go*TT
, ponieważT
jest inicjowany10
.Zamiast pisać
16
bezpośrednio, generuję to za pomocąye|LZ9
.|LZ
zasadniczo działa jako funkcja zakresu, więc|LZ9
daje[0, 1, 2, 3, 4, 5, 6, 7, 8]
.e
bierze ostatni element listy, dając8
.y
podwaja go, dając16
zgodnie z życzeniem. Z dodatkowym+
lub dodatkowym*
mogę uratować postać, ale oba są bardziej przydatne gdzie indziej.Więcej w przyszłości!
źródło
Ruby - Ocena: 74
1. Uruchom
Podjęto wyzwanie.
źródło
JavaScript (ES6), wynik = 74
1. Uruchom, 74 bajty
6. Ezoteryzm (nieważny)
Dla przypomnienia, moim sugerowanym quine było:
które okazały się nieprawidłowe, jak omówiono w komentarzach poniżej.
źródło
Siatkówka, ocena 74
1. Uruchom, zdobądź 74
Przeniosłem dodatkowe pareny do konfiguracji, aby mogły się zrównoważyć w wyrażeniu regularnym. Przeniosłem się
`
zaraz po nich i zmieniłem+.
na.+
.Wypróbuj online
Inne są prawdopodobnie niemożliwe, ponieważ nie ma nowych linii. Nie ma też
-
transliteracji anid
klasy znaków cyfr.źródło
Pip, wynik 74 + (74–19) = 129
Tyle tylnych chwytów, że nie ma cytatu, pojedynczego lub podwójnego!
Zadanie 1, ocena 74
Zasadniczo tylko seria literałów wzorcowych (regex) w backticks, z których ostatni jest drukowany. Ponieważ istnieje nieparzysta liczba backsicków, musimy uciec z ukośnikiem jeden z nich (
`\``
). Wypróbuj online , z-w
dodaną flagą, aby udowodnić, że nie są generowane żadne ostrzeżenia.Zadanie 3, wynik 55 (długość 19)
Jest to możliwe przy użyciu raczej nieparzystej metody wprowadzania danych - piątego argumentu wiersza poleceń. Wypróbuj online!
Inne zadania
Możliwe jest uzyskanie danych wejściowych do zadania 2 tą samą metodą, co zadanie 3 powyżej. Problem polega na konwersji na kod ASCII i powrót do znaku. Pierwsze z nich można wykonać za pomocą
A
, ale drugie wymagaC
, lub ewentualnie indeksowania doPA
zmiennej. Konstruowanie i ocena kodu nie jest możliwa bezV
. Nie sądzę, że to zadanie jest możliwe.Zadanie 4 stanowi wyzwanie nawet bez ograniczonego zestawu znaków. Domyślam się, że wymagałoby to list (bez użycia
[]
ograniczników lubRL
(lista powtórzeń) i tylko jednej szansy użyciaAL
(lista dołączeń) - mało prawdopodobne) lub ewentualnie czegoś zCG
(siatka współrzędnych) lubMC
( współrzędne mapy), oba niedozwolone .Zadanie 5 jest na granicy możliwości. Pętle byłyby trudne, ponieważ
F
aniM
ap nie są możliwe, a zakresów nie można konstruować,
. ZT
chorym może być coś do zrobienia . Przyrost może byćx:x+1
różny (oczywiście ze zmienną inną niżx
jednak). Można użyć kontroli podzielności%
. Mimo to nie sądzę, aby było wystarczająco dużo znaków - zwłaszcza powtarzających się liter - aby zrobić wszystko, co trzeba.Zadanie 6 wygląda zupełnie niemożliwie. Wszystkie znane piny Pip mają
"
w sobie. Używają równieżR
(zamień),RP
(repr) lubV
(eval), z których żaden nie jest dostępny.źródło
W rzeczywistości wynik (74 + 0 + 0 + 0 + 0 + 0 ) = 74
Tak, ciąg kapsułki będzie działał z Rzeczywistym tak, jak w przypadku Uruchom, ponieważ Faktycznie odrzuca wszelkie błędy, a każdy błąd staje się NOP.
H@~*^)$.
( Wypróbuj online! )~+1A|Q)p~
\Z!IQ~e:O.~@#|9@)Tf\eT`=(!
|~!y!
) Q~$x.4|m4~~&!L{%Będzie jednak generować bałagan rzeczy (ale także raz jego źródło: 3).
Będę jednak pracował nad innymi wyzwaniami.
źródło
Q
(ponieważ jest to wbudowana funkcja quining) i nie ma podwójnych cudzysłowów, więc nie możesz wykonywać formatowania ciągów. Pracowałem nad tym wczoraj i jestem całkiem pewien, że inne programy nie są możliwe wyłącznie z 74 znakami.05AB1E - Łączny wynik: 74
1. Uruchom, 74 bajty
Wszystko, co powoduje błąd, jest pomijane przez 05AB1E. Cały wiersz kodu to NOP.
Wypróbuj online!
źródło
(nadużywane) PHP, 74 + 74 = 148
Interpreter PHP po prostu zrzuca kod źródłowy, dopóki nie znajdzie,
<?
ponieważ brak<
każdej permutacji tych znaków jest działającym quine. Wydaje mi się, że nie jest to gorsze niż użycie wbudowanego polecenia quine: Pźródło
output this char
do momentu, gdy spotka<
. Nie mówię, że jest przystosowany do ładunku lub coś, po prostu mówię, że to nie ma różnicy dla języka, który mówi charoutput the source
. Jeśli nie jest to prawidłowa odpowiedź dla części 1, niż jakikolwiek język, który akceptuje dowolne wprowadzanie danych bez błędu, również nie jest poprawną odpowiedzią. Nie sądzę, że jest to bardziej obelżywe niż większość odpowiedzi tutaj.Mathematica, wynik 68
Zwróć uwagę na końcowy znak nowej linii. Nie sądzę, aby jakiekolwiek inne wyzwania można było osiągnąć dzięki Mathematica.
źródło
Labirynt, ocena 74
Jestem pewien, że jakikolwiek asortyment tych znaków tworzy prawidłowy program Labiryntu, ale aby uczynić go przynajmniej nieco bardziej interesującym, drukuje
2016
cyfra po cyfrze. (Podsumowując: pchnij 22
na stosie, pop / wydrukuj jeden, przenieś drugi na stos Aux, wydrukuj 0, pchnij 21
na stosie, pop / print 1, przyrost, bitowe nie, negacja (to ostatnie1
jest3
w tym momencie), zsumuj ze2
stosu Aux, 5 * 10 + 4 = 54, wydrukuj jako wartość ascii, zakończ)Większość długiej linii jest po prostu ignorowana, ponieważ
@
kończy działanie programu.Wyzwania 2, 3 i 4 są niemożliwe, ponieważ żadne z poleceń wejściowych Labiryntu nie jest dostępne (
,
lub?
), a ja nie wymyśliłem niczego dla 5 lub 6.źródło
SmileBASIC, 48 punktów
wyzwanie 1:
wyjaśnienie:
inne:
Żadne polecenia wejścia / wyjścia nie są dostępne, więc pozostałe nie są możliwe.
Nadal nieźle jak na prawdziwy język bez komentarzy.
źródło
MATL , łączny wynik 74
1. Uruchom, zdobądź 74
Wszystko co to
%
jest rzeczywisty kod.%
jest symbolem komentarza, więc znaki po jego prawej stronie są ignorowane.Program wyświetla wyniki
1
bez błędów.Wypróbuj online!
źródło
uderzenie, wynik 74
1: Uruchom. Możemy uruchomić wszystkie 74
6: Ezoteryzm:
Pusty program to quine w bash.
Bez żadnych białych znaków nie można osiągnąć nic innego na liście. Ergo, mam zwycięski wpis bash.
źródło
Perl 6 , łączny wynik 74
1. Uruchom, zdobądź 74
Bez komentarza.
(Po prostu umieszczenie
#
przodu, aby wszystko było komentarzem, również działa, ale to jest bardziej zabawne.)Praca
To jest podzbiór języka Perl 6, który używa tylko dozwolonych znaków:
Bezpośrednią przeszkodą w zapobieganiu wyzwaniom 2-6 jest to, że nie ma sposobu na wykonanie operacji wejścia / wyjścia:
Jeśli założymy, że istnieje plik o nazwie
f
, możemy użyć goQ`f`.IO.e
do sprawdzenia, czy istnieje, lubQ`f`.IO.x
do sprawdzenia, czy jest wykonywalny. Ale nie możemy tego przeczytać ani z niego napisać.Możemy użyć
Q:x` `
polecenia powłoki (zakładając, że znajdziemy znaki dla jednego). Ale nie możemy niczego interpolować, więc byłoby to dobre tylko do czytania, a nie pisania.Ponieważ nie ma nawiasu zamykającego, nie możemy utworzyć bloku lambda (np.
{1 + $_}
), Który automatycznie zwraca wartość ostatniej instrukcji.My mogliśmy użyć gwiazdki dokonać lambda wyrażenia (np
1+*
), ale potem możemy wziąć tylko jeden argument, odnoszą się do tego argumentu tylko raz, i są jeszcze bardziej ograniczone w składni / operatorów możemy wykorzystać.źródło
Lua, wynik 31
1. Uruchom (31 z 74 punktów)
źródło
variable =stuff
jest o 1 bajt dłuższy.Galaretka , ocena 74
1. Uruchom , 74
Nie jestem pewien, jak to zrobić.
źródło
/// , wynik: 146
1. Bieg, wynik: 74
!!!!!#$$%&())))*+...1449:=@@@AHILOQQQTTZ\\^`````````eefmpxy{||||~~~~~~~~~
6. Quine, wynik: 72
!!!!!#$$%&())))*+...1449:=@@@AHILOQQQTTZ^`````````eefmpxy{||||~~~~~~~~~
Tak, kiedy w kodzie nie ma żadnych ukośników, to po prostu drukuje się.
źródło