Wyzwanie:
Twoim zadaniem jest napisanie jak największej liczby programów / funkcji / fragmentów, z których każdy wypisuje / drukuje / zwraca liczbę całkowitą. Pierwszy program musi wypisać liczbę całkowitą 1
, drugi 2
i tak dalej.
Nie można ponownie używać żadnych znaków między programami. Tak więc, jeśli pierwszym programem jest x==x
:, to nie możesz używać znaków x
i =
ponownie w żadnym innym programie. Uwaga: Dozwolone jest używanie tego samego znaku wiele razy w jednym programie.
Punktacja:
Zwycięzcą zostanie zgłoszenie, które liczy się najwyżej. W przypadku remisu zwycięzcą zostanie zgłoszenie, które wykorzystało najmniejszą liczbę bajtów ogółem.
Zasady:
- Możesz używać tylko jednego języka dla wszystkich liczb całkowitych
- Fragmenty są dozwolone!
- Aby zachować sprawiedliwość, wszystkie znaki muszą być kodowane za pomocą jednego bajtu w wybranym języku.
- Dane wyjściowe muszą być dziesiętne. Nie możesz wyprowadzać go z notacją naukową lub innym alternatywnym formatem. Wyprowadzanie liczb zmiennoprzecinkowych jest OK, o ile wszystkie cyfry wyświetlane za kropką dziesiętną są
0
. Tak4.000
jest akceptowane. Niedokładności wynikające z FPA są akceptowane, o ile nie są pokazane w danych wyjściowych. ans =
, dozwolone są spacje wiodące i końcowe oraz znaki nowej linii itp.- Możesz zignorować STDERR, o ile poprawne dane wyjściowe są zwracane do STDOUT
- Możesz wybrać wypisywanie liczby całkowitej na STDERR, ale tylko wtedy, gdy STDOUT jest pusty.
- Języki niezależne od symboli (takie jak Lenguage ) są niedozwolone
- W literach rozróżniana jest wielkość liter
a != A
. - Programy muszą być niezależne
- Nie można ponownie użyć białych znaków
- W danych wyjściowych należy użyć cyfr ASCII
Wyjaśnienia są zachęcane!
number
code-challenge
restricted-source
Stewie Griffin
źródło
źródło
#include <iostream>
innych elementów w C ++. Państwo nie potrzebująfrom numpy import *
. Uwaga: nie jestem programistą, więc nie znam wszystkich niuansów. Możemy porozmawiać na czacie, jeśli coś jest niejasne :)Odpowiedzi:
JavaScript (ES7), wynik 17, 176 bajtów
Powiedzieli, że nie da się tego zrobić, więc to zrobiłem: D (dzięki dużej pomocy @FullDecent)
Nieużywane znaki:
Nie sądzę, że 18 jest możliwe, ale powiedziałem to samo o 17 ...
Wyjaśnienie
JavaScript jest językiem bardzo słabo wpisanym; jeśli spróbujesz wykonać operację matematyczną na wartości innej niż liczbowa, JS spróbuje jak najmocniej przekonwertować ją na liczbę. Pozwala to na wiele interesujących rozwiązań. Starałem się unikać używania cyfr w jak największym stopniu, aby można było z nich później korzystać.
**
jest operatorem potęgowania w ES7. Pusty łańcuch po wymuszeniu na liczbę staje się0
, więc oblicza się0 ** 0
to1
zgodnie z JavaScript./~/
jest wyrażeniem regularnym i~/~/
zwraca-1
, więc jest to~(-1 / -1) / -1
=~(1) / -1
=-2 / -1
=2
. ( podziękowania dla @ GOTO0 za pomysł)3
.4
.NaN
jest falsy tak!NaN
znaczytrue
, która jest równoważna1
. Wyrażenie staje się więc1 - -1 - -1 - -1 - -1
=1 + 1 + 1 + 1 + 1
=5
.6
.7
.8
.9
.+[]
jest0
, więc[[]][+[]]
zwraca pierwszy element[[]]
(to znaczy[]
) i++
zwiększa to1
. Następnie+[+[]]
dodaje tablicę[0]
, która jest wymuszana na łańcuch i tworzy"10"
.11
. Pierwotnie użyłem11&1111
dla 3 i33/3
11, dopóki nie zdałem sobie sprawy, jak głupi jestem ...12
i użyć.length
.2
S i>
S przez chwilę, aby uzyskać ten. Mam znowu szczęście:222 >> 2
jest55
i55 >> 2
jest13
.14
w hex (0xE
), ale potrzebujemy cyfry w0
innym miejscu. Zamiast tego wstawiamy wynik``^``
do ciąguxE
; pusty ciąg wymuszony na liczbę to0
, więc to zwraca0 ^ 0
=0
. Następnie wynik jest XORowany z pustym ciągiem, który konwertuje obie wartości na liczby;"0xE" ^ ""
jest14
.0XF
jest literałem szesnastkowym o wartości15
.C
naCSS == CSS
(to znaczytrue
). Następnie bierzemy wynik i wykonujemy<< C
cztery razy, co w zasadzie mnoży1
przez2 ** 4
.555...555%55
zwrócić liczbę, która nie jest0
lub5
. Miałem szczęście, grając tutaj.Strategie, które działałyby na wielu liczbach:
-!NaN
działałby na dowolnej liczbie (obecnie5
), choć robi się bardzo duża.~/~/
działałby na dowolnej liczbie (obecnie2
), choć robi się bardzo duży bardzo szybko.+[]
działałby na dowolnej liczbie (obecnie10
), chociaż jest to zdecydowanie najłatwiejsze na10
lub11
..length
działałby na dowolnej liczbie.`${-``}xE`-``
działałby na prawie każdym numerze, jeśli zrobiłbyś to dobrze.C<<C
działałby na dowolnej potędze dwóch (obecnie16
) lub dowolnej int, jeśli byś to uwzględnił|
.źródło
window.
właściwości, na przykładdefaultPixelWidth
, ale wszystkie wydają się zawierać albol
alboe
. Możesz dostać kolejne 0,URL | URL
ale to niewiele pomaga.+ - * ~ < x X length
1 2 3 4 5 6 7 8 9 + - * ~ < x X length
. Więc zanim go rozwiązać nie możemy iść 18Galaretka , 47 liczb całkowitych, 519 bajtów
Każda linia to osobny, pełny program.
Wypróbuj online! (obejmuje zestaw testów i moduł sprawdzania skrzyżowań)
Jak to działa
Każdy pełny program bez argumentów wiersza poleceń wykonuje swój główny link (zdefiniowany w ostatnim wierszu) niladycznie, tzn. Bez danych wejściowych. Jeśli pierwsze łącze w łańcuchu jest zerowe, zostaje zużyte, wywołane, a argument argumentu głównego i wartość zwracana są ustawiane na wynik; jeśli pierwsze ogniwo w łańcuchu to monada lub diada, nie jest ono zużywane i zamiast tego używany jest domyślny argument i wartość zwracana 0 . W obu przypadkach reszta łańcucha jest wykonywana monadycznie.
Galaretka zmienia swoją produkcję w kilku przypadkach. W szczególności tablica singletonów jest drukowana bez otaczających ją nawiasów, więc 42 i [42] i nie można ich odróżnić po wydrukowaniu. Użyjemy tego kilka razy.
1 - 10
Istnieją testy atom Jeśli wartość 0 należący do argumentu 0 . Tak, więc
e
zwraca 1 .BI$
jest szybkim łączem, w szczególności łańcuchem monadycznym utworzonym przez szybkie$
grupowanie atomu binarnegoB
i atomu przyrostowegoI
. Łącznie przekształcają liczbę całkowitą w tablicę jej cyfr w podstawie 2, a następnie obliczają różnice w przód wynikowych cyfr. Jeśli tablica ma tylko jeden element, nie ma różnic naprzód iI
zwraca pustą tablicę (falsy); jeśli są co najmniej dwie cyfry,I
zwraca niepustą tablicę (prawda).Szybkie
#
zużywa poprzednie szybkie łącze i stosuje je do 0 , 1, 2,… aż do znalezienia wystarczającej liczby dopasowań i zwraca tablicę dopasowań. Wymagana kwota jest obliczana przez⁼
, który porównuje zwracaną wartość / argument 0 do siebie, dając 1 . Zatem cały program zwraca [2] , pierwszą nieujemną liczbę całkowitą z dwiema cyframi w bazie 2.⁾⁾⁾
jest literałem ciągu, w szczególności ciągu ⁾⁾ . Stopień się atomỤ
sortuje swoje wskaźniki od odpowiadających im wartości; ponieważ oba znaki są równe, daje to [1, 2] . Wynikowa tablica jest redukowana bitowym XOR^/
, więc cały program zwraca 3 .ı
inicjuje argument i zwraca wartość do urojonej jednostki i .*
jest diadem potęgowania , którego prawy argument jest domyślnie argumentem głównego linku. Tak więc***ı
oblicza ((i i ) i ) i ≈ 4,81 + 0i ,Ḟ
atom ( podłoga dla prawdziwych argumentów, część rzeczywista dla argumentów złożonych) oblicza część rzeczywistą ( 4.81 ), a następnieḞ
podłogi, uzyskując 4 .Te trzy programy składają się z jednego literału i robią dokładnie to, czego można oczekiwać.
Dosłowność
.
jest skrótem dla 0,5 i inicjuje argument i wartość zwracaną. Przez podział całkowitą (diad w:
) bezpośrednio argumentem standardowo argumentu główne szlaki tak::::
oblicza 0,5 / 0,5 / 0,5 / 0,5 / 0,5 , otrzymując 8 .Kolejny dosłowny.
Cały równy atom
E
zwraca 1, jeśli wszystkie elementy w argumencie są równe, a 0, jeśli nie. Argument liczby całkowitej z jest promowany do [z] , więcE
zwraca 1 dla niejawnego argumentu 0 .Teraz wyjściowy atom
Ȯ
wypisuje 1 na STDOUT. Następnie porównujemy 1 z niejawnym argumentem 0, używając mniej niż atom<
. Wynikiem jest (1 <0) = 0 i jest ono domyślnie drukowane po zakończeniu programu.11–20
Siatki atom
G
stara się wizualnie przyjemny stolik z jego argumentacji. W przypadku zwykłego argumentu liczby całkowitej (tutaj: 0 ) po prostu otacza go tablicą. Płaskim nie równy atom⁻
porównuje niejawnego argumentu 0 w związku z czym do prawej ( [0] ), uzyskując 1 od argumenty nie są równe. W reprezentacji atomṘ
odbitki 1 do standardowe wyjście i powraca do swojego wyniku. Pod koniec programu końcowa wartość zwracana jest domyślnie drukowana, więc otrzymujemy wynik 11 .Samo szybko
`
zamienia dyad do monady poprzez wywołanie go z identycznymi argumentami lewych i prawych. Po pierwsze,=`
porównuje domyślny argument 0 z samym sobą, dając 1 .Iloczyn atom
p
oczekuje listy której argumentami tak promuje całkowitą 1 w stosunku do zakresu [1, ..., 1] = [1] .p`
bierze iloczyn kartezjański [1] i siebie, dając [[1, 1]] .Eval atom
V
zamienia wszystkie tablice płaskie (zawierające tylko cyfry i znaki) do ciągów, a następnie ocenia wynikające sznurki jak niladic programów galaretki. [[1, 1]] jest najpierw przekształcane w [„11”] , a następnieV
analizuje ciąg, uzyskując [11] . Jeszcze razV
zamienia tę tablicę na „11” , a następnie sprawdza ją, uzyskując 11 .Teraz
×`
mnoży 11 ze sobą, dając 121 . Dziesiętny atom obraca 121 w [1, 2, 1] The unikalny atomQ
odrzuca drugie 1 iV
ponownie włącza listę cyfr do liczby całkowitej, która wynika z ich łączenie, zwracając 12 .~
jest bitowym NIE atomem. Z arytmetyką dopełniania dwóch odwzorowuje argument z na ~ z = - (z + 1) .A
jest atomem wartości bezwzględnej , więc odwzorowuje - (z + 1) = z + 1 . Przy początkowej wartości zwracanej 0 trzynaście kopii~A
zwrotu 13 .Stała
⁷
przechowuje znak nowej linii „\ n” i inicjuje argument oraz wartość zwracaną.Uneval atom
Ṿ
próby stworzenia reprezentacji ciąg jej argumentu Z , tak że program galarety składająca się z tym kodem wróci z .Pierwsze wywołanie sumiennie zwraca ciąg „” \ n ” , który jest dosłowny. Następne połączenie zwraca „” ”,„ \ n ” - parę literałów znakowych. Trzecie i ostatnie wywołanie zwraca „” ”,„ ”,” ,, ””, „\ n” - pięciokrotny literał znakowy.
Na koniec atom indeksu okna
w
promuje swój prawidłowy argument „\ n” do ciągu „\ n” i znajduje pierwszy indeks podłańcucha zaczynający się od „\ n” . Zwraca 14 .⁴
jest stałą 16 . Filtr szybkiego odnośnika filterfalse each (ḟ€
) promuje swój lewy argument 16 do zakresu [1,…, 16] , a następnie iteruje swoje elementy.Dla każdego elementu Z ,
ḟ⁴
wykonywana jest najpierw promowania Z do [Z] , a następnie usunięcie wszystkich (jeśli w ogóle) występujące 16 . Daje to tablicę [[1], [2],…, [14], [15], []] , gdzie ostatnia tablica jest pusta, ponieważ zawierała 16 .Wreszcie maksymalny atom
Ṁ
wybiera [15] .Modułowy atom
m
- wywoływana z zastosowaniem argumentów x (array) i y (całkowita) trwa zwykle co | y | ty element x , począwszy od pierwszego jeśli y> 0 , przy czym ostatni jeśli y <0 . Jednak gdy y = 0 , zwraca x skonkatenowane z odwrotnością.Argument lewej liczby całkowitej 0 jest najpierw promowany do [0] . Pierwsza kopia
m
konkatenatów [0] ze sobą, dając [0, 0] . Pozostałe kopie zamieniają ten wynik na [0, 0, 0, 0] , a następnie [0, 0, 0, 0, 0, 0, 0, 0] , a na koniec [0, 0, 0, 0, 0, 0 , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] .W końcu, liczba atomów
ċ
zlicza liczbę niejawny argumentów 0 pojawia się w macierzy wynikowej, powracający 16 .ṭ
jest hals atom i dołącza swój lewy argument do jej prawej. Ponieważṭ
i poniższeḍ
są dynamiczne, wszystkie wywołaniaṭ
przekazujące domyślny argument 0 jako właściwy argumentṭ
. Pierwsze połączenie zwraca [0, 0] , drugie [0, [0, 0] , a ósme i ostatnie [0, [0, [0, [0, [0,] 0]]]]]]]] .ḍ
jest atomem podzielności ; argumentów X i Y , to zwraca 1 to x jest podzielna przez r , 0 , jeżeli nie.Ḅ
jest opcją dla liczb całkowitych, więcḍḄ
testuje 0 na podzielność przez każdą liczbę całkowitą w skonstruowanej tablicy. 0 jest podzielne samo w sobie, więc otrzymujemy [1, [1, [1, [1, [1, [1, [1, [1, 1]]]]]]]] .Teraz niebinarny atom
Ḅ
działa na płaskich tablicach. Dla pary [a, b] zwraca po prostu 2a + b . Jak wspomniano wcześniej,Ḅ
brak opcji dla liczb całkowitych: argument liczby całkowitej c jest promowany do [c] , a [c] w dowolnej bazie to po prostu c .Pierwsze wezwanie do
Ḅ
zmniejszenia [1, 1] do 3 , co daje [1, [1, [1, [1, [1, [1, [1, 3]]]]]]] . Następne połączenie zmniejsza [1, 3] do 5 , następne [1, 5] do 7 i tak dalej, aż dziewiątaḄ
zwróci 17 .Ṇ
jest płaskim logicznym atomem NOT i odwzorowuje domyślny argument od 0 do 1 .+
jest atomem dodawania, więc każda z osiemnastu kopii+Ṇ
przyrostu poprzedniej wartości zwracanej (początkowo 0 ). Cały program zwraca zatem 18 .C
jest atomem dopełniacza i odwzorowuje swój argument z na 1-z .N
jest atomem negującym i odwzorowuje swój argument z na -z . RazemCN
odwzorowuje z na - (1-z) = z-1 , więc osiemnaście kopii zamienia domyślny argument 0 na -18 . Ostateczne zastosowanieC
plonów1 - (-18) = 19
.Enumerate atom
Ė
wylicza elementów w szeregu, tworząc pary wskaźnik wartości. Domniemany argument 0 jest promowany do [0] , a następnieĖ
daje [[1, 0]] . Undecimal atom przekształca płaską macierz od podstawy 10, do liczby całkowitej, otrzymując [10], w tym konkretnym przypadku.Drugie wezwanie do
Ė
przekształcenia [10] w [[1, 10]] , które drugieḌ
ostatecznie przekształca w [20] .21–30
Ogon atom
ṫ
(diada) wybrać postfix jego lewego argumentu, który zaczyna się przy indeksie (1 oparte modułowy) określony w prawym argumencie, promując lewego argumentu całkowitą x do [x] . Po wywołaniu z obydwoma argumentami ustawionymi na 0 ,ṫ
zwraca [0] .Wszelkie atom
Ȧ
zwraca 1 , jeśli jej argument truthy i nie zawiera zer na dowolnej głębokości, 0 w inny sposób. Tutaj po prostu używamy go jako funkcji tożsamości, aby zwrócić domyślny argument 0 . Podzielonego na atomieṣ
dzieli swój lewy argument [0] na wystąpień jego prawego argumentu 0 , więc zwraca [[], []] tutaj.Indeksy atom
J
usuwa elementy wartość powrotną i zastępuje je z ich wskaźników, otrzymując ZAKRES [1, 2] , w tym konkretnym przypadku.Ȧ
iṫ
oba działają tak jak poprzednio, więc zmniejszają [1, 2] do postfiksa, który zaczyna się od ostatniego indeksu, dając [2] .W łączach niladycznych stała
⁸
utrzymuje [] . Jest to nie do rozdzielenia nilad, tzn. Nie pasuje w żaden sposób do łańcucha. W rezultacie poprzednia zwracana wartość ( [2] ) jest drukowana do STDOUT, a następnie zastępowana wartością nilada ( [] ).Ponieważ [] jest fałszem,
Ȧ
przekształca go w 0 .J
Atom sprzyja 0 do [0] , a następnie powraca do swojej listy indeksów ( [1] ), która jest pośrednio drukowanych po zakończeniu programu.Kolejny dosłowny. Wydaje się, że reprodukcje są najlepszym miejscem do ich wykorzystania.
Wykorzystuje to wbudowaną kompresję sznurkową Jelly. Wskaźniki @ i ṃ na stronie kodowej Jelly to 64 i 220, a literały łańcuchowe mogą zawierać 250 różnych znaków, więc to najpierw oblicza liczbę całkowitą 250 × 65 + 220 = 16470 .
16470 można podzielić przez 3, więc iloraz 16470/3 = 5490 koduje drukowalny znak ASCII lub linię. Jest ich 96 i 5490 = 96 × 57 + 18 , co oznacza, że zdekodowaliśmy znak ASCII , który można wydrukować, o indeksie 18 opartym na 0 , czyli „2” .
Pozostaje nam 57 , która również jest podzielna przez 3 , więc iloraz 57/3 = 19 = 96 × 0 + 19 koduje drukowalny znak ASCII przy indeksie 18 opartym na 0 , czyli „3” .
To pozostawia 0 ; proces dekodowania zostaje zatrzymany. Wygenerowane znaki są łączone w postaci „23”
Silnia atom
!
obraca niejawnego argumentu 0 do 1 . Dwie inwokacje atomu nieopuszczalnegoḤ
zamieniają 1 w 2 , a następnie 2 w 4 . Wreszcie!
oblicza 4! = 24 .W przypadku braku argumentów wiersza poleceń stała
³
ma wartość 100 . Dwie inwokacje zH
kolei 100 na 50 , a następnie 50 na 25 .Stała
Øa
zawiera małe litery. Maksymalny atomM
daje wszystkie indeksy maksymalnej pozycji, a ponieważ oo jest największym mała litera, wynik jest [26] .Dwadzieścia sześć kopii konkatenowanego atomu
;
konkatenuje początkową wartość zwracaną 0 i dwadzieścia sześć instancji domyślnego argumentu 0 , tworząc tablicę 27 zer.¬
jest logicznym atomem NOT , więc;¬
dodaje 1 do tablicy zer. Następny¬
neguje wszystkie elementy w tablicy, pozostawiając nam tablicę 27 jedności i 1 zero.ḅ
jest atomem bazowym i konwertuje tablicę cyfr z lewego argumentu z podstawy określonej w prawym argumencie na liczbę całkowitą.ḅ¬
konwertuje z jedności na liczbę całkowitą, więc po prostu wykonuje sumę. W przypadku tablicy 27 zwraca 27 .Wskaźnik atom
i
sprzyja jego lewy argument 0 do [0] , a następnie znajdowany jej prawym argumencie 0 w tej tablicy, otrzymując 1 .Zakres atom
r
konstruuje rosnąco lub malejąco zakres od niego pozostało argument do jej prawej. Właściwym argumentem jest domyślny argument 0 , więc daje to [1, 0] . Drugie wywołanie funkcjii
znajduje indeks 0 w [1, 0] , dając 2 .ð
rozpoczyna nowy, dynastyczny łańcuch. Ponieważ poprzedni łańcuch był zerowy, zarówno lewy, jak i prawy argument tego łańcucha będą równe wartości zwracanej przez pierwszy łańcuch ( 2 ).c
w kombinacjach atom. Z lewym argumentem 8 i prawym argumentem 2 zlicza wszystkie unikalne, nieuporządkowane 2 kombinacje zestawu 8 elementów, zwracając 8C2 = 8! / (6! 2!) = 28 .Stała
⁶
przechowuje znak spacji i ustawia argument oraz zwraca wartość na „” . Słowa atomḲ
promuje postać „” do jednoelementowy łańcucha „” i rozdziela go w przestrzeni, w wyniku czego otrzymano [[], []] .Grupowe atomowych
Ġ
wszystkich grup wskaźników jednakowych elementów. Ponieważ oba elementy ostatniej wartości zwracanej są równe, zwraca tutaj [[1, 2]] tutaj. Minimalna atom wyodrębnia minimalnej (tylko) elementem macierzy, otrzymano [1, 2] .Stopień atom
°
przetwarza obie liczby całkowite ze stopni sześćdziesiątkowa do radianach, otrzymując 1 ° x 2π / 360 ° = p / 180 i 2 x 2π ° / 360 ° = π / 90 . Odwrotny atom bierze multiplikatywnej odwrotności, otrzymując 180 / gatunku ≈ 57,3 i 90 / gatunku ≈ 28,6 .Następnie
Ṃ
ponownie przyjmuje minimum, uzyskując 28,6 . Ostatecznie atom sufituĊ
przekształca 28,6 w 29 .Tożsamość atom
¹
powraca 0 do utajonego argumentu 0 . Podzielonego wokół atomuœṡ
sprzyja jego obu argumentów (oba 0 ) do [0] , a następnie dzieli [0] wokół sąsiadujących subarrays równych [0] . Daje to [[], []] .Okno przesuwne atom
Ẇ
tworzy stycznymi subarrays jej argumentu. Pierwsze wystąpienie przekształca [[], []] w [[[]], [[]], [[], []]] , drugie wystąpienie przekształca [[[]], [[]], [[] , []]] na[[[[[]]], [[[]]], [[[], []]], [[[]], [[]]], [[[]], [ [], []]], [[[]], [[]], [[], []]]] .
Prawda atom
T
zawiera wszystkie indeksy pierwiastków truthy. Żadna z tablic na pierwszym poziomie nie jest pusta, więc daje to [1, 2, 3, 4, 5, 6] . Odwracania atomU
odwrócenie tej tablicy, otrzymując [6, 5, 4, 3, 2, 1] .Cztery kopie atomu pop
Ṗ
usuwają cztery ostatnie elementy, pozostawiając nam [6, 5] . Na koniec atom produktuP
przekształca tę tablicę w 30 .31–40
ȷ
jest skrótem dla 1 × 10 3 = 1000 . Pierwiastek atom½
daje 31,6 , którego zakres atomR
przekształca [1, ..., 31] . W końcu atom ogonaṪ
wydobywa ostatni element, zwracając 31 .Długość atom
L
promuje niejawnego argumentu 0 do [0] , a następnie wykonuje się w celu uzyskania długości 1 .µ
rozpoczyna nowy, monadyczny łańcuch, a wynik 1 staje się jego argumentem.Argumentów X i Y , z divmod atom
d
wydajności [X / Y, X% y] . Każde połączenie będzie miało y = 1 , więc wynik będzie zawsze wynosił [x, 0] .Pierwsze wywołanie zaczyna się od x = 1 , dając [1, 0] .
d
działa tylko na liczbach całkowitych, więc wektoryzuje w kolejnych wywołaniach. Drugie połączenie daje [[1, 0], [0, 0]] , trzecie [[[1, 0], [0, 0]], [[0, 0], [0, 0]]] , a piąty i ostatni to tablica o głębokości 5, która zawiera jeden i 31 zer.µ
ponownie rozpoczyna się nowy, monadyczny łańcuch, a tablica z przeszłości staje się jego argumentem. Płaskim atomF
unnests tej tablicy, uzyskując płaską tablicę jeden oraz 31 zerami. WreszcieL
zajmuje długość wynikowego, zwracając 32 .Kolejny repdigit, kolejny dosłowny.
Każde wystąpienie atomu zawijania przekształca swój argument z na [z] . Przy początkowej wartości zwracanej 0 wszystkie 34 wystąpienia łącznie dają [[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[0]]] ]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]] . Na koniec atom głębokości
ŒḊ
oblicza maksymalną głębokość wynikowej tablicy, zwracając 34 .Okno istnieje atom
ẇ
sprzyja jego obu argumentów (obydwa odnoszą się do 0 ) do [0] , a następnie sprawdza, czy ** [0] ** występuje jako ciągła subarray w [0] . Tak, więcẇ
zwraca 1 .ɓ
rozpoczyna nowy, dynastyczny łańcuch. Ponieważ poprzedni łańcuch był zerowy, zarówno lewy, jak i prawy argument tego łańcucha będą równe wartości zwracanej przez pierwszy łańcuch ( 1 ). Łańcuch wykorzystuje dwa różne, dyadyczne atomy: przesunięcie bitowe left (æ«
) i bitowe OR (|
).Łańcuch diadad, który zaczyna się od trzech lub więcej diad, początkowo nazywa pierwszą diadem argumentami łańcucha. Tutaj daje to 1 << 1 = 2 . Sześć kolejnych diady są pogrupowane w pary (tak zwane widelce ), gdzie pierwsza skrajna prawa dyada jest wywoływana jako pierwsza z argumentami łańcucha, a następnie skrajna lewa jest wywoływana z poprzednimi wartościami zwracanymi po obu stronach.
Dla
æ«æ«
otrzymujemy 2 << (1 << 1) = 2 << 2 = 8 . Następnieæ«æ«
oblicza 8 << (1 << 1) = 8 << 2 = 32 . Teraz|æ«
dostaje 32 | (1 << 1) = 32 | 2 = 34 .Wreszcie, trailing
|
działa jak hook i jest wywoływany z poprzednią wartością zwracaną jako lewym argumentem, a prawym argumentem łańcucha jako prawym. Zwraca 34 | 1 = 35 .W przypadku braku drugiego argumentu stała
⁹
zawiera 256 . Odwrotnej atom promuje 256 do tablicy [2, 5, 6] i odwraca go w celu uzyskania [6, 5, 2] . Następnie atom głowyḢ
wyodrębnia pierwszy element, a kwadratowy atom²
zwraca ** 6² = 36 *.Przyrost atom
‘
zwiększa swój argument 1 , tak‘‘‘
obrócić początkową wartość powrotną 0 do 3 . Poniższe 0 jest niemożliwym do rozdzielenia niladem, tzn. Nie pasuje w żaden sposób do łańcucha. W rezultacie poprzednia zwracana wartość ( 3 ) jest drukowana do STDOUT, a następnie zastępowana wartością nilada ( 0 ).Kolejne 7 kopii
‘
zamienia to 0 na 7 , które jest drukowane domyślnie po zakończeniu programu.Ubytek atom
’
zmniejsza swój argument 1 , tak trzydziestu ośmiu kopii kolei początkowa wartość powrotną 0 do -38 . Bezwzględna różnica atomạ
oblicza bez znaku różnicy pomiędzy -38 i domyślne argumentu 0 , powracającą 38 .-
jest skrótem dla -1 i ustawia argument linku i zwraca wartość na -1 . Każda_
jest instancją atomu odejmowania dynamicznego , którego prawy argument będzie domyślnie ustawiony na -1, jeśli go nie będzie.Po pierwsze,
-____-
oblicza (-1) - (-1) - (-1) - (-1) - (-1) = 3 . Poniższe -1 jest nie do rozdzielenia nilad, więc poprzednia zwracana wartość ( 3 ) jest drukowana do STDOUT, a następnie zastępowana wartością nilad ( -1 ).Następnie
-_
oblicza (-1) - (-1) = 0 , gdzie literał-
ustawia lewy argument_
i używa wartości zwracanej jako prawej. Następne dziewięć kopii_
odejmuje domyślny argument -1 od wartości zwracanej, co daje 9 , która jest drukowana niejawnie po zakończeniu programu.”(
jest literałem znaku, a atom porządkowyO
wyszukuje punkt kodowy Unicode, uzyskując 40 .41–47
W przypadku braku trzeciego argumentu wiersza poleceń stała
⁵
ma wartość 10 . Unlength atomḶ
tworzy szereg się w oparciu o 0, a konkretnie [0, ..., 9] do argumentu 10 , na obu stronach powtórzenia w miejsce atomux
. Ten ostatni dopasowuje elementy swojego lewego argumentu z powtórzeniami swojego prawego argumentu i powtarza każdy z elementów odpowiednią liczbę razy. Z argumentem [0,…, 9] jako argumentem zarówno lewym, jak i prawym, otrzymujemy zero zer, jeden, dwa dwójki itp.Indeks do atomu
ị
pobiera element jego prawym argumencie w indeksie określonym w lewym. Z lewym argumentem 10 (⁵
po lewej) i prawym argumentem [1, 2, 2, 3, 3, 3, 4, 4, 4, 4,…, 9] (poprzedni wynik), daje to 4 .Po łańcuchu do tego punktu następuje nie dająca się oddzielić nilad
⁵
, więc poprzednia wartość zwracana ( 4 ) jest drukowana do STDOUT, wartość zwracana jest ustawiona na 10 , a reszta łańcucha jest analizowana jak zwykle.Tak jak poprzednio,
⁵ḶxḶ
da tablicę [1, 2, 2, 3, 3, 3, 4, 4, 4, 4,…, 9] . Tym razem nazywamy posortowany atomṢ
argumentem 10 , który promuje 10 do [1, 0] , a następnie sortuje go, aby uzyskać [0, 1] . Dwójkowym głowica atom pobiera teraz prefiksy długości 0 i 1 z wyniku w lewo, pozostawiając nas [[], [1]] . Po wydrukowaniu nic oprócz 1 pozostanie widoczne.⁽
a jego dwa kolejne znaki stanowią literał liczbowy. Jeśli j i k są ich punktami kodowymi na stronie kodowej Jelly, a (j, k) <(124, 250) , otrzymujemy liczbę całkowitą 1001 + 250j + k . Punkty kodowe „{” , „}” i „ʂ” to 123 , 125 i 167 , więc lewy literał ma wartość 1001 + 250 × 123 + 167 (= 31918) , podczas gdy prawy ma wartość 1001 + 250 × 123 + 125 (= 31876) .Ponieważ lewa liczba całkowita jest mniejsza niż dwa razy większa niż prawa, wynikiem jest (… + 167)% (… + 125) = (… + 167) - (… + 125) = 167- 125 = 42 .
Shuffle atom
Ẋ
losuje kolejność elementów jej argument za; argument numeryczny z jest wcześniej promowany do zakresu [1,…, z] . Dla domyślnego argumentu 0 ten zakres jest pusty iẊ
daje [] . Wszystkim atomẠ
zwraca 1 , gdy wszystkie elementy swój argument są truthy, 0 ile nie. Ponieważ pusta tablica nie zawiera elementów fałszowania,Ạ
zwraca tutaj 1 .Błyskawiczny z atomem
ż
(diada) wykonuje argumentów X i Y oraz transpozycję parę [x, y] . Dla liczb całkowitych x i y daje to po prostu [[x, y]] , więc ten konkretnyż
, wywołany z argumentami 1 i 0 (argument niejawny), zwraca [[1, 0]] . Dwójkowym eval atomv
zamienia wszystkie tablice płaskie (zawierające tylko cyfry i litery) Ja lewy argument do strun, a następnie ocenia wynikające sznurki jak monadycznych programów galaretki z jego prawego argumentu jako argumenty programów. Ponieważ [„10”]składa się wyłącznie z literałów, ignoruje to prawidłowy argumentv
i po prostu daje wynik [10] .Kopiowania Szybkie
©
przywiązuje dov
i kopiuje jej wyniku do rejestru. Późniejsze wystąpienia atomu przywracania®
(nilad) będą pobierać [10] z rejestru.Kolejne trzy kopie
żv
pracy jak poprzednio, mapowanie [10] na [[10, 0] na [100] na ... na [10000] . W kolejności atomọ
testy ile razy jej lewy argument jest podzielna przez jego prawą, więc tutaj, to oblicza kolejności 10 (sprowadzone®
) w 10000 = 10 4 , otrzymując [4] .Poniżej
®
znajduje się nie do rozdzielenia nilad, więc poprzednia zwracana wartość ( [4] ) jest drukowana do STDOUT, a następnie zastępowana wartością nilad ( 10 ). AplikujemyẠ
następnie, uzyskując 1 . (Jest to wymagane, ponieważ w tym momencie można przeanalizować nilad, a następnie diadę).Tak jak poprzednio,
żvżvżv
dodaje trzy zera do bieżącej wartości zwracanej, zmieniając 1 w [1000] . Na koniecọ®
oblicza kolejność 10 na 1000 = 10 3 , a 3 kończy się na STDOUT po zakończeniu programu.Kolejna repedycja, jeszcze jedna dosłowność.
Przede wszystkim literał
111111
ustawia argument i początkową wartość zwracaną na 111111 . Inne serie1
są również dosłowne.l
jest atomem logarytmicznym , który oblicza logarytm swojego lewego argumentu do podstawy określonej w prawym. Po wywołaniu 111111 z właściwym argumentem 11 otrzymujemy log 11 111111 ≈ 4,85 .Słowa atom
K
dołącza się listę argumentów w przestrzeni, po promowanie numeryczny / znak Z do [z] . Tutaj po prostu używamy go do przekształcenia argumentu łącza 111111 na [111111] . (Nie wymagamy tutaj tablicy, ale zabrakło atomów tożsamości). Bitowy AND atom&
przyjmuje wartości zwracane na obie strony, w razie potrzeby wyrzuca je na liczbę całkowitą i oblicza ich bitowe AND. W tym konkretnym przypadku zwraca [4,85 i 111111] = [4 i 111111] = [4] .Poniżej
1111111
znajduje się nie do rozdzielenia nilad, więc poprzednia zwracana wartość ( [4] ) jest drukowana do STDOUT, a następnie zastępowana wartością nilad ( 1111111 ).K
następnie zamienia tę liczbę całkowitą na [1111111] . (To po raz kolejny nie jest tak naprawdę wymagane, ale w tym momencie można przeanalizować nilad, a następnie diadę).Tak jak poprzednio,
l11
oblicza log 11 1111111 ≈ 5,81 , a następnie&
zwraca [5,81 i 111111] = [5 i 111111] = [5] .Jest to jedyny program, który składa się z wielu linków zdefiniowanych przez użytkownika. Ostatni link jest linkiem głównym i jest wykonywany po uruchomieniu programu, pozostałe są linkami pomocniczymi. Szybkie
Ç
zawsze odnosi się do linku powyżej bieżącego i wykonuje je monadycznie. Podobnie szybkieÑ
zawsze odnosi się do linku pod bieżącym (zawijanie), a także wykonuje je monadycznie.Górny związek składa się z pary atom
,
- diada że obraca argumentów X i Y w [x, y] - a suma atomS
- monady który promuje całkowitą argumentu Z do [Z] i zmniejsza argument tablicy addycja. Kiedy link,SS
jest wywoływany z argumentem liczby całkowitej n , oblicza Σ [n, Σn] = Σ [n, n] = 2n .Środkowe ogniwo składa się z powyższych atomów, wspomnianego szybkiego
Ç
i nieistotnego atomuỊ
- monady, która daje 1 dla liczbowych argumentów z z -1 ≤ z ≤ 1 , ale 0 dla wszystkich innych. StosującỊ
dwukrotnie argument całkowitej n zasadzie zastępuje go 1 , na wyjściu pierwszegoỊ
(The wejściowego z drugim) jest zawsze znaczenia. Ten wynik jest następnie łączony z wartością zwracanąÇ
(wywoływaną z argumentem n ), a wynikowa para jest zmniejszana oS
. W sumie obliczamyΣ [(| n | ≤ 1) ≤ 1, 2n] = Σ [1, 2n] = 2n + 1 .Po zastosowaniu tych dwóch linków pomocniczych główny link może teraz konstruować dowolną nieujemną liczbę całkowitą, patrząc na jego binarne cyfry. Przy początkowej wartości zwracanej 0 łańcuch
ÇÑÇÇÇÑ
oblicza wynik końcowy ((((((0 × 2 + 1)) × 2) × 2 + 1) × 2 + 1) × 2 + 1) × 2 = ((5 × 2 + 1) × 2 + 1) × 2 = 46 .Obok pierwsza atom znajduje najmniejszą liczbę dodatnią doskonałą który jest większy od jej argumentu. Przy początkowej wartości zwracanej 0 piętnaście wywołań
Æn
oblicza piętnastą liczbę pierwszą, czyli 47 .źródło
pieprzenie mózgu , wynik 2,
25514410 bajtów... Tak, to nie najlepszy pomysł, ponieważ mam tylko 8 znaków (tarpits będzie tarpit) do pracy, ale zobaczmy, ile jest możliwe.
Myślę, że to wszystko, co jest możliwe. : PTa odpowiedź pokazuje sześć z ośmiu znaków wykorzystywanych przez ruchy mózgów, pozostałe dwa,
to wejście i.
wyjście.Wizualizuj to online!
Wyjaśnienie
Każda liczba jest tworzona i zapisywana w początkowej komórce na taśmie. W dużej mierze opiera się na owijających się komórkach, które nie są zaimplementowane w kilku tłumaczach.
1 :
2 :
źródło
Neim , wynik 38, 327 bajtów
Wyjaśnienie:
0
.ℂ
do sprawdzania 0 i 0 pod kątem współistnienia, które są. To popycha 1. Następnie otrzymujemy pierwszą liczbę pierwszą𝐋
, która powoduje, że lista singletonów zawiera tylko 2. Następnie otrzymujemy największy element (𝐠
), który wypycha 2 jako liczbę. Następnie powtarzamy ten proces, aż otrzymamy listę[2 3 5 7 11]
. Następnie używamy𝐝
do obliczania delt, w wyniku czego powstaje lista[1 2 2 4]
. Następnie używamy,𝐬
aby uzyskać sumę - która wynosi 9 - następnie obliczamy wyłączny zakres od 0 do 9, w wyniku czego[0 1 2 3 4 5 6 7 8]
. Wreszcie,𝐬
jest ponownie używany, aby uzyskać 37.α
jest stałą, która reprezentuje wartość ujemną, a my wielokrotnie ją popychamy i odejmujemy (ponownie wykorzystując fakt, że kiedy próbujemy wyskoczyć z pustym wejściem, 0 jest wypychane)Można spróbować tutaj
źródło
all characters must be encoded using a single byte in the language you choose
. Czy Neim koduje te znaki specjalne tylko w 1 bajcie? W jaki sposób?1
. Z pewnością możesz to wykorzystać?Python 2, 15
Oto początek, szukam więcej
Dzięki Leo, którego wskazówka pomogła mi dotrzeć do 15
źródło
-~-~-~-~-~-~-~-~-~[[]==[]][[]<[]]
dla 10 i0xD
dla 13 dla niższej liczby bajtów ogółem''is''
wartość true, aby utworzyć inną liczbę?((()<((),))|(()<((),))<<(()<((),))|(()<((),))<<(()<((),))<<(()<((),)))<<(()<((),))
string.printable
c, j, k, l, s, v, w, y, z, A, B, C, D, E, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, !, #, $, &, ., :, ?, @, \\, `, {, }, \t, \r, \x0b, \x0c
Japt , 448 bajtów, wynik 42
Duża współpraca Shaggy , ETHproductions i Oliver .
Pozostały następujące (przydatne) znaki:
Objaśnienia
Kilka rzeczy, które warto wiedzieć o Japt, zanim zaczniemy, z których często korzystałem. Po pierwsze, Japt ma 6 zmiennych zarezerwowanych do wprowadzania, które są dużymi literami
U-Z
. Jeśli żadne zmienne nie zostaną przekazane przez te zmienne, wszystkie domyślnie przyjmą wartość0
. Druga rzecz jest omówiona w tym poradniku .Kliknij dowolny fragment, aby wypróbować go w tłumaczu online .
Po zastosowaniu do liczby
v
metoda przyjmuje liczbę całkowitą n jako argument i zwraca 1, jeśli liczba jest podzielna przez n , 0, jeśli nie. Jeśli n nie jest podane, domyślnie jest to 2 . 0 (wartość domyślna dlaU
) jest podzielna przez 2 , więc daje nam to nasze 1 .Bardzo podobny do pierwszego. Po zastosowaniu do liczby,
y
metoda przyjmuje liczbę całkowitą n jako argument i zwraca GCD dwóch liczb. Jeśli n nie jest podane, domyślnie jest to 2 . Ponieważ 0 jest podzielne przez 2 , GCD (0, 2) daje nam nasze 2 .Í
jest skrótem dlan(2)
lub2
-this
. Ponieważ nie mamy wejście, to domyślniethis
do0
, co skutkuje2-0 = 2
.à
zwraca liczbę kombinacji[1...this]
, która zwraca 3Q
domyślnie jest to pojedynczy znak cudzysłowu.i
na sznurku wstawia na początku kolejny sznurek; jak wyjaśniono w punkcie 3 , każdyiiii)
jest równoważny z.i("i".i("i"))
JS, wstawiając w ten sposób dwie kopiei
na początku łańcucha. Zrób to dwa razy, a otrzymasz ciągiiii"
.âQ
następnie symuluje.search(Q)
, podając indeks pierwszego"
w ciągu, który wynosi 4 .H
jest stałą dla 32 . Po zastosowaniu do liczbyq
metoda, która przyjmuje liczbę całkowitą n jako argument, zwraca n- ty pierwiastek tej liczby. Jeśli n nie zostanie podane, wartość domyślna to 2, więcHq
daje nam pierwiastek kwadratowy z 32, który wynosi około 5,6568 .Â
jest skrótem do~~
, który podaje wynik, dając nam 5 .L
jest wstępnie ustawiony na 100 iÁ
jest skrótem do>>>
(przesunięcie bitowe w prawo z zerowym wypełnieniem).100>>>100
jest taki sam jak100>>>4
(prawy operand otacza mod 32), czyli 6 .Jak wspomniano wcześniej,
V
domyślnie 0 .´
jest skrótem dla--
operatora, więc kod jest równoważny do następującego JS:X.n(Y)
jest równoważne Y - X lub -X + Y ; pierwsze--V
zwraca -1 , a drugie -2 , więc jest to odpowiednik - (- 1) + (- (- 2) + (- (- 2) + - (- 2))) . Upraszczając, otrzymujemy 1 + 2 + 2 + 2 = 7 .Dosłownie 8 i 9 .
Są to stałe dla 10 - 16 włącznie.
J
jest ustawiony na -1 . Interpretatorowi Japt udało się w jakiś sposób poprawnie to przeanalizować, as(J--) - (--J) - (--J) - (--J) - (--J)
. Robiąc trochę matematyki, okazuje się, że jest to równoważne z (-1) - (-3) - (-4) - (-5) - (-6) lub -1 + 3 + 4 + 5 + 6 = 17 .¾
jest, jak można się domyślić, skrótem do.75
. Umieszczamy 24 tablice 0,75 w tablicy, a następnie sumujemyx
, dając 0,75 * 24 = 18 .Myślę, że to mój ulubiony.
;
na początku programu zmienia wartości niektórych stałych Japt; bez niegoI
jest 64 , ale wraz z nimI
jest 91 .ìw
konwertuje go na listę cyfr i działaw
na liście, odwracając tablicę, a następnie konwertuje z powrotem na liczbę, aby uzyskać nam 19 .½
jest skrótem do.5
.e
na liczbę x przyjmuje argument y i zwraca x * 10 y . Tak więc łańcuch obliczeń, który ma miejsce, to:A finał
~~
służy do doliczenia tego do liczby całkowitej, co daje wynik 20 .T
jest ustawiony na 0 .++
jest operatorem przyrostowym w JS, a także w Japt;T+++T
jest analizowany jako(T++) + T
, ale++T+++T
jest analizowany jako(++T) + (++T)
, więc jest to równoważne z kodem JSWynik to 1 + 2 + 3 + 4 + 5 + 6 , co daje 21 .
Dosłownie 22 .
Ä
jest skrótem do+1
, więc suma ta wynosi 231
s.Znajduje to liczbę permutacji
[1, 2, 3, 4]
, która wynosi 4! = 24 .²
to skrót dop2
, który podnosi liczbę do potęgi dwóch. 5 ** 2 to 25 .°
jest skrótem dla++
operatora, lub nie mogą być przetwarzane jako takie+ +
. Jak wspomniano wcześniej, gdy nie ma danych wejściowych,U
domyślnie wynosi 0 . Zatem kod jest równoważny(++U), (U++) + + (++U) + + (++U) + + (++U) + + (++U) + + (++U)
, który jest bardzo podobny do # 17 :U
jest najpierw zwiększany do1
, a następnie wielokrotnie zwiększany i dodawany tak, że końcowy wynik to 1 + 3 + 4 + 5 + 6 + 7 = 26 .³
jest skrótem dop
metody z argumentem 3 . Jeśli jednak mała litera pojawi się bezpośrednio po lewym nawiasie (»
jest skrótem((
), staje się ciągiem. Pozwala to przejść do metody im³
wywołać jako funkcję (tzn. Będzie mapowana przez.p(3)
). W tym przypadku jednak("p",3)
zwraca nasze3
, a następnie zwiększamy do potęgi3
(p
jest to metoda potęgi po zastosowaniu do liczby), co daje nam 27 .¼
, jak zapewne już wiesz, jest skrótem.25
, więc oblicza 7 / 0,25 = 28 .Wszystko owinięte w
$
symbole jest traktowane jako czysty JavaScript, więc mamy ciąg 29 znaków podkreślenia, po których następujeb
. (Bez$
,'
byłby ciągiem jednoznakowym.)b
Metoda zastosowana do ciągu zwraca pierwszy indeks jego argumentu w tym ciągu. Jak wyjaśniono w punkcie 3 , ostatnib
jest konwertowany na ciąg, więc chwytamy pierwszy indeksb
w naszym ciągu, który wynosi 29 .µ
jest skrótem do-=
iÉ
dla-1
. Efektem jest odjęcie 30 kopii -1 od 0 , co daje 30 .Bardzo jak # 29.
a
Metoda, po nałożeniu na sznurku, zwraca ostatni indeks swojej argumentacji w tym ciąg. Przy zastosowaniu indeksowania 0 ostatni indeksa
ciągu 32a
s wynosi 31 .S
jest predefiniowany do pojedynczej spacji ic
na łańcuchu jednokolumnowym zwraca swój kod znakowy, co daje 32 .Dosłowny 33 .
MgN
zwraca liczbę N-tego Fibonacciego.011
ma wartość 9 w liczbie ósemkowej; dziewiąta liczba Fibonacciego to 34 .#
zwraca kod znakowy następnego znaku. Sama liczba znaków#
to 35 , co sprawia, że nasza praca tutaj jest wyjątkowo łatwa.p
jest potęgowaniem i bez drugiego argumentu domyślnie przyjmuje wartość 2 ; w ten sposób wypisuje 6 ** 2 = 36 .Ten jest dość trudny.
R
domyślnie jest to pojedynczy znak nowej linii (że nowa linia staje się ważna później).í
na ciąg, bez żadnych argumentów, pobiera każdy znak i dołącza jego indeks: raczej bezużyteczna transformacja, ale wynik przez 5 iteracji jest następujący: (używającR
zamiast literału nowej linii)Ciekawe, jak każdy wpis jest po prostu przedrostkiem następnego ... Ale w każdym razie, ostatnia część
è.
, liczy, ile dopasowań/./g
znaleziono w wyniku. Ciąg zawiera 38 znaków; jednak ponieważ/./g
pasuje tylko do znaków nowej linii, wynik wynosi 37 .Wsteczne zaznaczają skompresowany ciąg i
¥
rozpakowują się doll
.l
na sznurku dajel
ength, więc po dekompresji daje to 38 .Ooo, chłopcze, ten jest doozy. Najpierw generujemy za
true
pomocą¨N
(¨
oznacza>=
, iN
bez danych wejściowych jest pusta tablica), a następnie przekształcamy to w za1
pomocą|N
. Od tego momentu robi się całkiem szalony:(Te
¹
są tylko substytutami przybliżeń i zostały pominięte). Końcowyo
następnie wyskakuje i zwraca ostatni element w tablicy, dając 39 .Przeważnie taka sama sztuczka jak w przypadku # 3 .
¤
jest skrótem dos
metody z argumentem 2 . W tym przypadku jednak transpilowany kod jest(("s", 2).s(2) * (("s", 2) * (("s", 2))))
lub jest uproszczony(2).s(2) * (2 * 2)
..s(2)
zwraca liczbę jako ciąg base-2, co daje"10"
;* (2 * 2)
domyślnie konwertuje to na liczbę i mnoży przez 4 , dając 40 .Podobne do poprzedniego.
Å
jest skrótem dos
metody z argumentem 1 . W tym przypadku jednak każda(Å
transpiluje się do("s", 1)
, co zwraca tylko 1 .1<<1<<1<<1<<1<<1
wynosi 32 , i1<<1<<1<<1
jest 8 ; są one XORed razem,1
aby uzyskać 41 .±
jest skrótem do+=
i¶
dla===
. Oznacza to, że kod jest rzeczywiścieY===Y
jest zawsze prawdziwe, więc możemy to uprościć:0 + 1 = 1 ; 1 + 1 = 2 ; 2 + (2 + 1) = 5 ; 5 + 5 = 10 ; 10 + (10 + 1) = 21 ; 21 + 21 = 42 .
źródło
Iq
8, aby8
wrócić, ale musisz znaleźć coś jeszcze dla 19.q
do5
umożliwienia mil
dodania dodatkowego numeru. Pracuję nad alternatywą dla,2
aby=
odzyskać.(¤
dla 2.L>>L
może uwolnić 6.#w s Å
może uwolnić;
iI
#
dla 21.*
i^
PHP, wynik 17, 130 bajtów
użyte znaki
ADEFGIKLMOPRSTVXYZ=_![]()<>'"#$,;/-+*|^&0123456789afhnprstwx
1 Stała logiczna Z (nieustawiona) równa stała Z
2 FTP_MOREDATA jest stałą w PHP o wartości 2
3 bitowe i znaki; i w
4 bitowe Przesunięcie w lewo i logiczne nie rzucanie pustej tablicy na wartość logiczną prawda jest rzutowane na liczbę całkowitą 1 przez przesunięcie lewego operatora
7 bitów Lub znaki # i $ i 1
9 SIGKILL jest stałą w PHP o wartości 9
10 bitowe Przesunięcie w prawo na każdym kroku jest dzieleniem całkowitym z 8, więc mamy kroki 333333, 41666, 5208, 651, 81, 10
13 policz char X w ciągu X ... od początku
15 wartość szesnastkowa f = 15
17 bitów Xor z ciągami ha i YV
Wszystkie fragmenty są elementami w tablicy
Wypróbuj online!
PHP, wynik 16, 94 bajtów
użyte znaki
AEIMPRTUZeflnrstvwx^_&|()[]=!.*+/-<>$":0123456789
1 Stała logiczna Z (nieustawiona) równa stała Z
2 bitowe i znaki: i w
3 Pi rzutowane na wartość całkowitą poprzez pustą tablicę rzutowaną na zero
7 bitowych znaków xor A i v
Nie ustawiono 10 zmiennych $ s! $ S = jeden konkat o długości łańcucha zmiennej $ s
13 111/2 = 55/2 = 27/2 = 13 Dzielenie liczb całkowitych bitowo
15 wartość szesnastkowa f = 15
Wszystkie fragmenty są elementami w tablicy
Wypróbuj online!
PHP, wynik 14, 84 bajtów
użyte znaki
$!_^[]()%/+~-=AEILMNPRUZ0123456789delnrstx
1 Stała logiczna Z (nieustawiona) równa stała Z
3 Pi rzutowane na wartość całkowitą poprzez pustą tablicę rzutowaną na zero
7 ERA jest stałą o wartości 131116 mod 11 = 7
Nie ustawiono 10 zmiennych $ s! $ S = jeden konkat o długości łańcucha zmiennej $ s wynosi zero
13 wartość szesnastkowa d = 13 14 bitowo nie i znak minus podnoszą NULL do 14
Wszystkie fragmenty są elementami w tablicy
Wypróbuj online!
źródło
R, wynik
1314Dostałem dodatkowy dzięki user2390246.
Użyte znaki:
0123456789acemqrstuvxDFT^=";-/+()$
źródło
F^F
2"n"%in%"n"+"n"%in%"n"
:; 3-9: cyfry, 10,1e1
, 11:22/2
,: 12T--T--T--T...
, 13:0xD
14:sum(mtcars$vs)
%
i myślenie o użyciu wbudowanych zestawów danych. Nie rozumiem, dlaczego nie byłoby dobrze.dataset['A','B']
, pod warunkiem, że uniknie nakładania się już używanych liter (i zdarza się zawierać przydatną wartość!). Niestety, o ile mogę stwierdzić po krótkim spojrzeniu, wszystkie zestawy danych z nazwanymi wierszami zawierają literę i, więc nie jest to zgodne z używaniem%in%
.q=""=="";q+q
. To uwolniłoby korzystanie z literi
in
. Nie mam teraz czasu, żeby się tym przyjrzeć, ale założę się, że gdzieś tam jest dodatkowy ...MATL , wynik
212223 liczb (273 bajtów)Dzięki J Doe za zwiększenie od 22 do 23 liczb!
Wypróbuj online! Każdy fragment kodu w łączu jest zakończony albo
D
(wyświetl), albo]D
(zamknij jawnie pętlę i wyświetl), aby wyczyścić stos, a tym samym odizolować go od następnego fragmentu.Wyjaśnienie
Push
0
. Negować. Dajetrue
, który jest wyświetlany jako1
.Wcisnąć sznurek
'bd'
. Kolejna różnica między punktami kodowymi znaków.Wciśnij tablicę komórek zawierającą liczbę
pi
. Konwertuj na tablicę numeryczną (tj. Na pojedynczą liczbę). Zaokrąglić w dół.Naciśnij
2
dwa razy. Moc.Literał liczbowy.
Literał liczbowy.
Literał liczbowy.
Literał liczbowy.
Literał liczbowy.
Push
3
. Push3.333333333333333
. Zwielokrotniać. Ze względu na dokładność zmiennoprzecinkową daje to10
.Literał liczbowy.
Push
3
. Pomnóż2
dwukrotnie.Wciśnij
[6]
(co jest takie samo jak6
). Oblicz n-tą liczbę pierwszą.Naciśnij
1
14 razy. Liczba elementów w stosie. Wyczyść resztę stosu.Push
4
. Kwadrat. Zrobić to samo. Any: daje1
. Odejmować.Push
4
.2
wychowany do tego.Wciśnij tablicę
[false false ... false]
(17 razy). Liczba elementów w tablicy.Wciśnij tablicę
[true true ... true]
(18 razy). Suma tablicy.Wciśnij 19 liczb losowych pobranych z przedziału (0,1). Łącz w poziomie 18 razy. Liczba niezerowych elementów w tablicy.
Naciśnij
0
20 razy. Połącz zawartość stosu w pionie (daje wektor kolumny). Rozmiar: daje tablicę[20 1]
. Maksymalna liczba tablic.Naciśnij
1j
(jednostka urojona) 21 razy. Dodaj 20 razy. Podziel przez1j
.Literał liczbowy
Wykonaj ... while loop (
`
) z niejawnym zakończeniem. W pierwszej iteracji przesuwa wskaźnik iteracji (@
) i zwiększa go (Q
) 22 razy, co daje wynik23
. Warunek pętli (@@<
) jest fałszywy, więc pętla została zakończona.Kilka pomysłów na dalszą poprawę
(spacja) we fragmencie 10 można zastąpić
|
X>
we fragmencie 20 można go zastąpićp
, uwalniając w ten sposób prefiksX
.:
,A
źródło
Vim 8 w systemie Windows, wynik 13, 104 bajtów
^{keystroke}
reprezentuje<C-{keystroke}>
, tak^X
jest<C-x>
, z wyjątkiem tego,^@
co jest<C-j>
. Wciąż próbuję dodać więcej liczb do tej listy i<CR>
reprezentuje ona linię.Uwaga: aby uruchomić te polecenia, uruchom vim za pomocą
-u NONE -U NONE
. Ma to na celu zapewnienie, że twoje konfiguracje nie będą zakłócały kodu.Fragmenty od 1 do 10 zaczynają się w trybie wstawiania. Podczas gdy fragmenty 12 i 13 zaczynają się w trybie normalnym.
Objaśnienia
Fragment 8 jest
:^R=&ts^@
. Muszę podziękować @ L3viathan za wymyślenie tego i @ nmjcman101 za zasugerowanie^@
jako zamiennika dla linefeed i @ ØrjanJohansen za skrócenie&tabstop
do&ts
.&ts
następnie ocenia wielkość karty, która domyślnie wynosi 8, a ta wartość jest wstawiana do edytora.Snippet 10 is
8^O^A^O^A
. Wstawiamy 8, a następnie dwukrotnie zwiększamy, aby uzyskać 10.Snippet 11 is
0^[^X^X^X^X^X^X^X^X^X^X^X0x
. Zapisujemy 0 i zmniejszamy je 11 razy, aby uzyskać -11. Następnie usuwamy minus, aby uzyskać 11.Fragment 12 jest
:h<CR>wwwwwwwwwwwy$:q<CR>p
. To otwiera menu pomocy Vima 8, które zawiera następujące informacje:I sekwencja
w
s przechodzi do 12, w którym to punkciey$
kopiuje liczbę. Następnie jest wklejany do edytora za pomocąp
.Fragment 13 jest
grgKjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjYZZvPWWWllld|llD
dziełem @DJMcMayhem za wymyślenie go. Działa to tylko w systemie Windows. Fragment przeszukuje menu pomocy w poszukiwaniu poleceń rozpoczynających się odg
. Następnie przesuwa się w dół za pomocą,j
aby dostać się do tej linii:po czym kopiuje i wkleja w buforze. Następnie wszystko oprócz 13 jest usuwane z bufora.
źródło
^R=&tabstop+&tabstop+&tabstop<CR>P
ci 12, lub jest<CR>
już używany z powodu^M
?<CR>
kiedy powiedziałem^M
, ale dzięki, teraz zajmę się usunięciem^M
fragmentu 8 :)0x01
podczas gdy Ctrl + X daje0x18
. I oczywiście te dwa są osobnymi bajtami. Czy to ma sens?-u NONE -U NONE
,&tabstop
ocenia na 8. Więc zamieniłem to na 8 fragment z pewnymi modyfikacjami, dzięki :)Mathematica, wynik 13
źródło
⌊⌋⌈⌉
rzeczy w jednym bajcie każdego ...⌊⌋⌈⌉
, zamieniając się⌊E⌋
wFloor@GoldenRatio
,⌈Pi⌉
w4
,LucasL@4
w7
i77/7
w22/2
. Prawdopodobnie można pójść o krok dalej, stosując funkcję z//
05AB1E , wynik 18, 67 bajtów
Wypróbuj online!
źródło
A'ok
:)„((Ç;¬
=20.0
(dwubajtowy char "(("; do wartości porządkowych; zmniejsz o połowę oba; weź ogon);₁.²₁P₃/ï
=21
(log-2 z 256; pomnożony przez 256; podzielony przez 95; z usuniętymi miejscami po przecinku);₂Ågttγć
=22
(26. termin Lucasa; dwa razy zrootowany; podzielony na uchwyty o równych elementach;PingPong , wynik 127
W PingPong każda postać ma swoją odrębną wartość liczbową, dzięki czemu zliczanie aż do 127 jest banalnym zadaniem. Język działa poprzez odczytywanie wartości każdego znaku i wypychanie go na górę stosu, gdzie wykonywane są wszystkie operacje. PingPong teoretycznie może przekroczyć 127, ale wymagałoby to przekazania bloku znaków, które po prostu pojawiają się jako spacje w edytorze tekstu, więc zostawiłem je poza moim rozwiązaniem.
źródło
Oktawa, wynik 14, 74 bajtów
Jestem prawie pewien, że jestem teraz blisko limitu.
Musiałem usunąć
strchr
ponieważ mam jużc
w liczbie 10. Wciąż mamj
,^
,=
,!
, przestrzeń i zakładka poziome (ASCII-9) w lewo, więc może to być możliwe, aby wycisnąć więcej w jednym.Zakładka pozioma może być używana jako spacja, więc lewę można użyć
strchr
innz
można ją użyć jeszcze raz. Pozostały tylko małe literyabdfgjkmoquvwxy
. Z tych funkcji nie można wykonać wielu funkcji.mod
może działać, ale nie może pobierać ciągów.Zdobycie pozostałych postaci jest łatwe
1
, ale nie wiem, jak mogę zdobyć cokolwiek innego.Przetestuj wszystko .
Być może przydatne:
fun a
jest taki sam jakfun('a')
,fun a b
jest taki sam jakfun('a','b')
i tak dalej. Można to wykorzystać w kilku miejscach:Użycie tego spowoduje
0
udostępnienie, ale nie widzę jeszcze, jak uczynić go użytecznym.e (2.71828...)
ij
są nadal nieużywane. Należy usunąć,ceil
aby użyće
.Alternatywy (inspiracja):
źródło
JavaScript (ES7), 16 liczb całkowitych,
137130128 bajtówWziąłem odpowiedź @ETHproductions' i pobiegł z nią przez jakiś czas; zmieniło się tak bardzo, że publikuję go osobno. Pomysły są mile widziane. :)
Pozostały:
$_@#!^&|/?:, ABDEGHIJKLNPQRUVWZcghjklmpqrsuvwyz
Lub jeśli fragment kodu dla 1 zostanie zastąpiony przez
!!/!//!!/!/
:$_@#^&|*?:", ABDEGHIJKLNPQRUVWZcghjklmpqrsuvwyz
JavaScript (ES7), 16 liczb całkowitych, 127 bajtów
Jeden bajt krótszy. : P
Pozostały:
$_@#!/^&|?:,ABDFGHIJKLNPQRVWYZcghjklmpqrsuvwyz
źródło
-~{}-~{}
: P Ogólnie jednak są całkiem dobre. Na pewno o wiele krótszy niż mój ...!&/^|
do pracy, całkiem imponujące. Jeśli zajdzie taka potrzeba, można użyć!!/!//!!/!/
dla 1 do handlu!/
na"*
.-~-~{}
+!![]+[+[]]
, o ile nie ma lepszego zastosowania dla!
Dyalog APL, wynik 15, 89 bajtów
Nowe linie wcześniej
l:l
są częścią 12.Spacje w 14 oznaczają tabulatory.
źródło
0 0 0
->0,0,0
;]fromhex f
> <> , wynik 20,
93907465 bajtów(3 bajty zapisane przez Teal Pelican, wiele bajtów zaoszczędzonych przez Jo Kinga!)
Wypróbuj je na placu zabaw dla ryb! Możesz sprawić, by fragmenty wydrukowały swoje wyniki, dodając
n;
je na końcu każdego z nich. Zwróć uwagę, że 9. fragment zawiera kartę, która jest spożywana przez wymianę stosu.Wyjaśnienie:
iii((
każdyi
stara się uzyskać wejście, ale ponieważ nie ma w ogóle, będą forsować EOF =-1
zamiast. Zatem(
jest instrukcja mniej niż, a ponieważ-1
jest nie mniej niż-1
, popycha falsey0
; ale druga(
pyta, czy-1
jest mniejsza niż0
, która jest, więc popycha prawdę1
.2
i3
są oczywiste.ll{lll{[
pierwszyl
przesuwa długość stosu, a0
następnie drugi przesuwa nową długość, doprowadzając stos do0, 1
. Do{
obraca stos lewo, zamiana1
i0
. Kolejne trzyl
przynoszą stos do1, 0, 2, 3, 4
. Następnie{
obraca1
przód do przodu i[
wysysa pierwszy1
rzecz ze stosu, którą jest4
.5
,6
,7
I8
są zbyt oczywiste.!\t00=0g
(gdzie\t
oznacza kartę),!
pomija kartę, a następnie00=
wypycha dwa zera i sprawdza, czy są równe - są, więc otrzymujemy prawdę1
. Po naciśnięciu innego0
,g
znak umieszcza znak w miejscu1,0
kodu, który jest zakładką z kodem znakowym9
.a
dof
każdego pchnięcia10
do15
odpowiednio (przypuszczalnie zrobić ładne szesnastkowy).44*
popycha dwa4
si pomnaża je razem, dla16
.'RA'
wypycha na stos kody znakówR
iA
(odpowiednio 82 i 65), a następnie%
oblicza82 mod 65 = 17
.999-9--
ocenia na9 - ((9 - 9) - 9) = 18
."&F#"
popycha kody znakowe&
,F
i#
, które są38
,70
i35
odpowiednio. Potem,
jest podział, więc rozumiemy38 / (70 / 35) = 19
.1::
wypycha a1
i duplikuje go dwa razy,+
dodaje dwa z nich razem, aby uzyskać2
;:+
duplikuje2
i dodaje do siebie, aby uzyskać4
;+
dodaje resztki1
do zdobycia5
; następnie:+:+
powiela się i dodaje dwa razy, co powoduje20
.Jest to maksymalny możliwy wynik z> <>. Dowolny fragment musi zawierać dyspozycję gdzieś, że zamienia pusty stos do niepustym stosie, a tam są tylko 18> <> instrukcje, które mogą zrobić, że (a mianowicie
i
,l
oraz cyfry0–9
ia–f
), plus tryb ciąg. (Każda inna instrukcja albo nic nie robi pustemu stosowi,><v^/\|_#x!{}r
albo próbuje wyskoczyć coś i popełnić błąd?.+-*,%=():~$@[]on&gp
). Wejście w tryb łańcuchowy używa albo,"
albo'
, więc możliwe są co najwyżej18 + 2 = 20
fragmenty.Jeśli jesteś bardziej komfortowe z unprintables niż ja, jest to możliwe w 53 bajtów, dzięki Jo King:
00=, iii((i-, 3, 4, 5, 6, 7, 8, 9, a, b, c, d, e, f, 2222***, !Xll$g, 11+::+:+:++, 'Y', "Z"
, gdzieX
,Y
iZ
są zastępowane przez znaki z kodami17
,19
i20
odpowiednio.źródło
iii((i-
16>2222***
17>lll{lllll{{[{n
(być może szkicowych, ale jeśli chcesz wyprowadzać jako jedną liczbę, przynajmniej jest jeden mniejl
) 18>11+::+:+:++
! ll$g
gdzie spacja jest zastąpiona znakiem kontrolnym o wartości 17 (Kontrola urządzeń 1)?MathGolf ,
485153 liczb całkowitych, 324 bajty+2 wynik (i -2 odrębne bajty użyte
40
) dzięki @maxb .Każda linia to osobny program.
Użyte bajty (92 różne bajty):
îª∞~c±b+φⁿ_¥-567○¢i♀/d²♂ABCDE☻FGHIJKLMNOPQRST♥UVWXYZ♫¼8]Σ41╔½π░3§2#τ╥└♦⌡!⌠'0$ÿ@£9)►◄╠•╠"h ♣(
Objaśnienia i łącza TIO:
MathGolf to nowy język golfa specjalizujący się w matematycznych wyzwaniach golfowych. Ma mnóstwo jednobajtowych wbudowanych liczb, co czyni go idealnym wyzwaniem.
1)
î
: Wciśnij 1-indeksowaną wartość pętli, która domyślnie wynosi 1: Wypróbuj online.2)
ª∞~
: Naciśnij [1]; podwój to ([2]); wyskakująca lista i wypchnij jej zawartość na stos: Wypróbuj online.3)
c±b±+
: Naciśnij -2; następnie pop i popchnij jego wartość bezwzględną; push -1; następnie pop i popchnij jego wartość bezwzględną; i dodaj je razem Wypróbuj online.4)
φⁿ_¥-
: Wciśnij złoty współczynnik (1.618033988749895); cube it (4.23606797749979); zduplikuj górę stosu; weź moduł 2 (0.23606797749979); odejmij je od siebie: Wypróbuj online.5,6,7) Same liczby: Wypróbuj online. Wypróbuj online. 9) : Push -3; do kwadratu: Wypróbuj online.
8)
○¢i♀/
: Push 2048; konwertować na ciąg szesnastkowy (800); rzut na liczbę całkowitą; push 100; podzielić:d²
10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34, 35,36,37,38) Push wbudowane dla samych liczb (♂ABCDE☻FGHIJKLMNOPQRST♥UVWXYZ
): Wypróbuj online.39)
♫¼¼¼¼
: Push 10000; liczba całkowita podzielona przez 4 cztery razy: Wypróbuj online.40)
88888]Σ
: Naciśnij 8 pięć razy; zawiń je w listę; zsumuj tę listę: Wypróbuj online.41) Sam numer: Wypróbuj online.
42)
╔½½½½½½½½½½½
: Push 86400; liczba całkowita podzielona przez 2 jedenaście razy: Wypróbuj online.43)
π░3§3
: Naciśnij PI (3.141592653589793
); rzutowany na sznurek; pop i wciśnij swój trzeci znak z indeksem (4); pchnij 3; wypisuje cały stos połączony niejawnie: Wypróbuj online.44) Wypróbuj online. 48)
22#22#
: Naciśnij 2 dwa razy; weź moc dwóch (4); Zrób to jeszcze raz; wysyła cały stos połączony niejawnie: Wypróbuj online.45)
τ╥└
: Push 2 * PI (6.283185307179586); pop i popchnij moc 2 poniżej, która jest najbliższa (4); pchnij górę stosu + 1 bez wyskakiwania (5); wysyła cały stos połączony niejawnie: Wypróbuj online.46)
♦⌡⌡⌡⌡⌡⌡⌡⌡⌡
: Push 64; zmniejszenie o 2 dziewięć razy: Wypróbuj online.47)
!⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠
: Push gamma (n + 1) (domyślnie 1); przyrost o 2 dwadzieścia trzy razy::'0$
: Naciśnij wartość porządkową znaku „0”: Wypróbuj online.49)
ÿ@@@@£9
: Push string"@@@@"
; pop i popchnij jego długość (4); push 9; wysyła cały stos połączony niejawnie: Wypróbuj online.50)
))))))))))))))))))))))))))))))))))))))))))))))))))
: Przyrost o 1 pięćdziesiąt razy: Wypróbuj online.51)
►◄╠•╠
: Wciśnij 1 000 000; Wciśnij 10.000.000; pop oba i dzieląc je liczbami całkowitymi (10); push 512; pop oba i dziel liczby całkowite ze sobą: Wypróbuj online.52)
"hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh"h
: Push string"hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh"
; przesuń jego długość (bez przerywania łańcucha); usuń wszystko ze stosu oprócz ostatniego elementu: Wypróbuj online.53)
♣(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((
: Push 128; zmniejszone o 1 siedemdziesiąt pięć razy: Wypróbuj online.Spróbuję dodać później. Pozostało mi jeszcze kilka przydatnych rzeczy, w tym modulo
%
i mnożenie*
.źródło
88888ΓΣαΣ
->88888]Σ
lub88888§§§§Σ
oszczędza 2 polecenia kosztem użycia jednego. Możesz także zrobić coś takiego,"xxxxxx"h
gdzie ostatni znak jest niełamiącą spacją, która usuwa wszystko oprócz TOS i możesz użyć długości ciągu do wygenerowania liczby. Być może użyjesz czegoś innego niżx
to, ponieważ masz wtedy,Wx
co daje ci 53, o ile możesz uzyskać 35 w inny sposób.char/ord
operator, który działa jak'A$
->67
, a także działa na dłuższe łańcuchy (coś w rodzaju liczb całkowitych base-256). Nie jest to bardzo dobrze udokumentowane, ale jeśli chcesz poprawić tę odpowiedź, mógłbym odtworzyć pokój rozmów dla MathGolf na wszelkie pytania.88888]Σ
. Nie wiedziałem o tym]
. Co do"hhhhh"h
, to nie wydaje się działać . : S[
rozpoczynając kontekst tablicy i]
kończąc ją oraz zawijając wyniki w tablicy. Aby najwyższy poziom zachowywał się jak niższe poziomy,]
zawinięcie całego stosu w tablicę wydawało się dobrym pomysłem.Java 8,
111213, 39 bajtówJava ma tylko 10 symboli dla liczb (0–9), a wszystkie wywołania metod i stałe wymagają kropki, więc nie jestem pewien, czy mogę uzyskać więcej niż 11 wynikówNajwyraźniej znaki są domyślnie rzutowane na liczby całkowite po zastosowaniu operacji
+1 za pomocą @ OlivierGrégoire
Objaśnienia:
liczba całkowita lambda, która nie przyjmuje danych wejściowych i zwraca 1. Gdy parametr nie przyjmuje danych wejściowych, używana jest wartość domyślna zgodnie z powyższym meta postem, która dla liczb całkowitych wynosi 0
dosłowne liczby całkowite
XOR dwóch znaków, aby zwrócić 10
dosłowna liczba całkowita
wyrażenie lambda, które zwraca długość ciągu 12 znaków
Szesnastkowy 13
TIO Link, jeśli chcesz zweryfikować.
źródło
2
można zapisać jako2
i10
jako'P'^'Z'
. Uwalnia to także postacieX+*
i używaP
.i->i.ONE
jest niepoprawny.Gaia , wynik 25, 203 bajtów
Uważam to za doskonały wynik, ponieważ nie można już używać niladów ze względu na ograniczenia postaci.
Objaśnienia
1.
§‼
§
jest znakiem spacji,‼
jest wymuszone na wartość logiczną, więc wynik to 1.2)
..⌉+⌉
.
jest skrótem do0.5
, więc tak jestceil(0.5+ceil(0.5))
.3)
₵P~~
₵P
jest pi,~
jest bitową negacją. Podwójna negacja bitowa to po prostu obcięcie.4
4
5
5
6.
6
7
∂Ql
∂Q
to lista zawierająca nazwy dni tygodnia,l
jest długością.8
8
9
9
10
¶c
Punkt kodowy
c
linefeed¶
.11
11
12
'¡ċ⌋u⌋
13
--⁻-⁻-⁻-⁻-⁻-⁻-⁻-⁻-⁻-⁻-⁻-⁻-⁻-⁻
-
jest skrótem od-1
,⁻
jest odejmowaniem. To-1 - -1 - -1...
wystarczy, by zrobić 13.14
7:,Σ
Wciśnij
7
, zduplikuj:
, sparuj,
dwa 7 na liście i zsumujΣ
.15.
Ø!))))))))))))))
Ø
jest pustym ciągiem, podobnie jakØ!
1. Przyrost)
1 14 razy.16
øøw<øøw<«øøw<«øøw<«øøw<«
17
⟩‘
Zamknięcie sznurka
‘
powoduje, że jest to literał liczbowy base-250.⟩
ma wartość bajtu 17 na stronie kodowej Gaia.18
₸ḣ₸K$₸ḣ₸/S₸₸/=$
19
]]]]]]]]]]]]]]]]]]]n
Każdy
]
zawija stos na liście. Zrób to 19 razy i uzyskaj głębięn
listy.20
⇑’e
Zamknięcie ciągu
’
powoduje, że jest to lista punktów kodowych strony kodowej.e
zrzuca listę na stos.⇑
ma punkt kodowy 20 na stronie kodowej.21
0(((((((((((((((((((((_
Zmniejsz
(
0 21 razy, a następnie zaneguj_
.22
22
23
“B”“↺↺↺↺↺↺↺↺↺↺↺↺↺↺↺↺↺↺↺↺↺↺↺B”B
Konwertuj ciąg
“B”
z bazy-24, gdzie są cyfry od 0 do 23↺↺↺↺↺↺↺↺↺↺↺↺↺↺↺↺↺↺↺↺↺↺↺B
. Rezultat jest23
.24
3₈×
3 × 8.
25
ℍḥḥ
100 o
ℍ
połowęḥ
i znowu o połowę.źródło
C, wynik 13
To tylko kilka stałych liczb całkowitych.
0==0
ocenia na 1__LINE__
= 21+1+1...
=1*10
= 10'o'
ma wartość 111,'.'
reprezentuje niedrukowalny kod ASCII 0x10. 111/10 = 11(2<<2)
= 8,8*2
= 16,16-2-2
= 12"strlenstrlens"
= 13źródło
Ohm , zdobądź
2122, 160 bajtów ogółemWypróbuj online!
Objaśnienia
1.
╓S@Ri
Naciśnij sekundy bieżącej daty / godziny (
╓S
). Uzyskaj zakres obejmujący od 1 do sekund (@
), odwróć go (R
), pobierz ostatni element (i
), który zawsze wynosi 1.2)
ΓΓ-Γ-Γ-
Γ
wynosi -1, więc jest to (-1) - (-1) - (-1) - (-1), czyli 2.3)
αê⌠
αê
jest liczbą Eulera (2,71828 ...),⌠
jest sufitem. 3 jest wynikiem.4
¡¡¡¡¼
¡
zwiększa licznik,¼
popycha licznik.5
5
Po prostu dosłownie.
6.
▀lll▀l
▀lll▀
jest skompresowanym dosłownym ciągiem znaków, który jest równoważny z"of >ic"
.l
przyjmuje długość, więc wynik wynosi 6.7
ÑÑÑÑÑÑÑÿWÿk
Najpierw wypychamy 7 znaków nowej linii (
Ñ
), a następnie pusty ciąg (ÿ
). Stos jest zawijany w tablicę (W
), a następnie znajduje się indeks pustego ciągu w tej tablicy.8
ü`½½
ü
jest spacją.`
wypycha wartość ASCII (32), a następnie dwukrotnie zmniejsza o połowę (½½
).9
9
Po prostu dosłownie.
10
..≥°
..
jest dosłowną.
postacią. Pobiera≥
funkcję incremented ( ), która analizuje ciąg znaków jako liczbę, domyślnie 0, ponieważ nie jest to poprawna liczba, i zwiększa ją do 1. Następnie obliczamy 10 1 (°
).11
$$J
$
wypycha bieżącą wartość rejestru, początkowo 1. Więc naciśnij dwa razy 1, połącz stos razem i wydrukuj.12
3dd
Naciśnij 3 i dwukrotnie dwukrotnie.
13
7ƒ
Przesuwa siódmą liczbę Fibonacciego.
14
2≡≡≡Σ
Naciśnij 2, trzykrotnie trzykrotnie, pozostawiając 7 2 na stosie. Następnie weź sumę stosu (
Σ
).15.
║F
║
jest ogranicznikiem literałów liczbowych base-220. Ponieważ znajduje się on na końcu linii, nie trzeba go kończyć.16
4º
Oblicz 2 4 .
17
0ò~ò~ò~ò~ò~ò~ò~ò~ò~ò~ò~ò~ò~ò~ò~ò~ò~
ò
jest negacją bitową,~
jest negacją arytmetyczną. Łącząc te operatory, możemy zwiększyć 0 17 razy.18
6DD++
Naciśnij 6, zduplikuj go dwukrotnie i oblicz 6 + 6 + 6.
19
8π
Naciśnij ósmą liczbę pierwszą.
20
τ╛hτ*
Naciśnij 10 (
τ
), zdobądź pierwszy element (h
) jego czynników pierwszych (╛
), pomnóż go przez 10.21
"≤"≤≤≤≤≤≤≤≤≤≤≤≤≤≤≤≤≤≤≤≤≤A
Podobnie jak w poprzednich fragmentach, ciąg
"≤"
jest analizowany jako 0. Zmniejszamy go 21 razy, a następnie przyjmujemy wartość bezwzględną.22
1111 11v11%L1111 11v11%L
Tutaj obliczamy 1111 dział 11 mod 11, czyli 2, a następnie drukujemy 2. Następnie zrób to jeszcze raz.
źródło
PowerShell, wynik
12, 91 bajtów.14, 176 bajtówEdytować:
(),""
Pondering 15 czymś w rodzaju,"ZZZZZZZZZZZZZZZA".InDeXof("A")
ale nie można ponownie użyć kropki lub „e”.PowerShell nie może wykonywać zmiennych bez $, nie potrafi potęgować, przesuwania bitów, Pi, ceil () itp. Z podstawowymi symbolami, i najczęściej używa koercji do / z bool i do / z liczb jako ciągów znaków, więc stosunkowo mało możliwości generowania liczb o niskiej składni.
źródło
0
Jeszcze nie korzystałeś , więc 13 może być0xd
. Możesz umieścić5
w normalnym miejscu, zwalniając+
do łączenia1
s. To powinno doprowadzić cię do 14. Jeśli chcesz zapisać znaki, klucze mieszające mogą mieć więcej niż jedną literę. A jeśli masz jakiś wolny sposób na zsumowanie 1, możesz zrobić10
=1e1
.""-(""-(""-lt(""-""))-(""-lt(""-"")))
. To pozwala$?
na podsumowanie, a potem możesz zrobić to,1e1
co zasugerowałem.t
starcia z obiema wersjami 1.(""-eq"")-(""-(""-eq""))
wydają się lepsze,q
w tablicy hashtable można ją łatwo wymienić.TI-Basic (seria 83), wynik
2122232425 (1003 bajtów)Zobacz http://tibasicdev.wikidot.com/one-byte-tokens, aby uzyskać listę rzeczy, które wyzwanie wyzwala i nie dopuszcza tutaj.
Wszystkie te mogą być kompletnymi programami, ponieważ ostatnia linia programu jest drukowana automatycznie. Ale (z wyjątkiem 17, które mają wiele linii) mogą być również fragmentami ekranu głównego.
W tym momencie nie widzę innego sposobu, aby uzyskać dowolną niezerową wartość spośród pozostałych dostępnych żetonów. Jeśli trzeba wprowadzić jakieś ulepszenia, trzeba będzie najpierw uczynić niektóre z powyższych rozwiązań bardziej konserwatywnymi.
Objaśnienia
A=A
jest wartością logiczną 1, ponieważ zmiennaA
jest sobie równa.B
domyślnie jest 0,tan(tan(cos(cos(cos(B
wynosi około 2,21, a następnie zabieramy głos.C!°
wynosi 1 stopień w radianach, około 0,017. Pewną pozytywną mocą tego jest tanh (2), około 0,964. Kodujemy tę moc w formacie binarnym za pomocą domniemanego mnożenia√(
, a następnie weźmytanh⁻¹(
.cosh(sinh⁻¹(X
₁₀^(
jest wbudowany w jeden bajt dla potęg 10, a 10 ^ 10 ^ 0 = 10 ^ 1 = 10.F nPr F
jest 1.sin(tan⁻¹(X
upraszczaG≤G
wynosi 1, podobnie[[G≤G]...[G≤G]]
jak wektor kolumny 13x1. Zebranie iloczynu transpozycji daje macierz[[13]]
, której wyznacznikiem jest 13.not(H)
jest 1.tanh(not(H))
to tylko pewna liczba nie równa się 0 lub 1, iln(XXX....X)ln(X)^⁻1
uprości się do liczbyX
w pierwszym logu, pod warunkiem, żeX
nie jest to 0 (tak, że dziennik istnieje) i nie 1 (abyśmy się nie dzielili przez 0).e^(e^(e^(F
ocenia na około 15.15, a następnie zabieramy głos.J≥J
to 1.identity(
konstruuje macierz tożsamości 1x1,dim(
znajduje wymiary wiersza i kolumny, orazsum(
dodaje je, aby uzyskać 2. Następnie robimy to jeszcze raz, dodając wymiary macierzy 2x2, aby uzyskać 4, i ponownie, dodając wymiary macierzy 4x4 aby uzyskać 8, i ponownie dodając wymiary macierzy 8x8, aby uzyskać 16.K nCr K
jest dwumianowym współczynnikiem 0 wybierz 0 lub 1. Dodanie 17 1 daje 17.i-i-...-i
upraszcza do ⁻18i, i biorącabs(
daje 18.rand→L
przechowuje losową liczbę rzeczywistą w L, ale nie obchodzi nas, co to jest. My obliczamylog(L)⁻¹log(L^19)
, co upraszcza do 19.sinh(sinh(cos⁻¹(I
jest nieco ponad 4, więcseq(III,I,I,sinh(sinh(cos⁻¹(I
podaje listę,{0 1 8 27 64}
której średnia arytmetyczna wynosi 20.π
powinna dać 21; zakodujemy tę potrójną potęgę za pomocą domniemanego mnożenia i³√(
.3×√(
jako pierwiastek kostki i(
do mnożenia.Fix 0
to ustawienie wyświetlania 0 cyfr po przecinku, zaokrąglając wszystkie wartości do liczb całkowitych.sin⁻¹(ᴇ0
ocenia na π / 2, a π / 2 pomnożone przez siebie 7 razy daje około 23,59, co zaokrągla do 24.5*5
to 25. (Bardziej konserwatywne byłoby5
uzyskanie 5 i dostosowanie zastosowanego tam rozwiązania do 25. Ale w ten sposób oszczędza się dużo miejsca i*
nie jest zbyt przydatną postacią, ponieważ istnieje domniemane mnożenie).źródło
SOGL , wynik
161820, 109 bajtów, 47 użytych znakówźródło
Brachylog , 16 liczb całkowitych, 86 bajtów
Wypróbuj online! (Wejście kontroluje, który program jest uruchamiany, od 1 do N)
Wyjaśnienie
źródło
Galaretka , zdobądź 22, 177 bajtów
Wypróbuj wszystkie na raz lub Wypróbuj pojedynczo (argumentem jest, które wyjście chcesz).
Niewykorzystane znaki:
źródło
A
dla 2 i 4 , nie?22¹£€Y
główny link, możesz wykonać wszystkie fragmenty naraz. tio.run/##y0rNyan8///hzjauOsc6Ry5jLt0jG3UPbTq0icuUy4zLnMuC6/…Reng, wynik 40, 149 bajtów
Wypróbuj tutaj!
Wszystkie wielkie litery są cyframi, więc to miłe. Wszystkie oprócz dwóch są fragmentami. Dwa, które są programami:
Podany link pozwala zobaczyć stos podczas działania. Wyjaśnię później.
źródło
CJam, wynik 27, 168 bajtów
1-3:
X
,Y
,Z
Zmienne
X
,Y
orazZ
jest inicjowany na 1, 2 i 3, odpowiednio.4:
",,,,",
Popchnij sznurek
,,,,
i weź długość.5-9:
5
,6
,7
,8
,9
Literały numeryczne.
10-20 :
A
-K
Zmienne zinicjalizowane.
21:
U)))))))))))))))))))))
Zmienna
U
jest inicjowana na0
. NaciśnijU
i zwiększ to 22 razy.22:
22
Literał liczbowy.
23:
';(((((((((';((((((((
Naciśnij postać
;
i zmniejsz ją 9 razy, aby uzyskać2
, a następnie naciśnij;
ponownie i zmniejsz ją 8 razy, aby uzyskać3
.24:
4m!
Weź silnię 4.
25:
TT=TT=+TT=TT=TT=TT=TT=++++
TT=
popycha1
. Ten kod jest równoważny z1 1+1 1 1 1 1++++
.26:
N:i~W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-
N
wypycha ciąg zawierający znak nowej linii.:i
konwertuje go na listę kodów znaków, dając[10]
.~
rozpakowuje to, dając10
.W-
jest odpowiednikiem dodania jednego. Zwiększenie wartości o szesnaście razy daje 26.27:
LLLLLLLLLLLLLLLLLLLLLLLLLLL0]0#
Znajdź indeks 0 na liście, gdzie 0 znajduje się na 27 indeksie.
Znaki nadal dostępne:
$%&*./1<>?@MOPQRSV[\^_`abcdefghjklmnopqrstuvwxyz{|}
Kilka uwag dotyczących potencjalnej ekspansji:
Być może będę musiał zmienić 10-20, aby użyć zmiennych do czegoś innego. Jeśli dostanę liczby większe niż 1, mogę użyć
*
(i być może operatorów bitowych, ale nie sądzę, aby wiele one pomogły).Nadal mam
S
, cokolwiek dobrego mi to zrobi.Jeśli zmienię 26 na
N{}/iW-W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-
, wtedy:
będzie dostępny.Mogę wcisnąć kilka pustych list i uzyskać więcej zer z istniejącymi zmiennymi. Mogę również uzyskać π, ale nie wydaje się to bardzo przydatne, chyba że mogę jakoś rzucić go na liczbę całkowitą i
m
(dlam[
) ii
są już zajęte.W zakresie manipulacji tablicami mogę:
%
lubf
*
|
:M1|2|3|
źródło
U)))))))))))))))))))))
i 22 be,22
które byłyby darmowe1
dla późniejszego fragmentu.:i
na listę cyfr (np.[P]1b
Daje3
).''
zamiast';
a następnie użyć wystarczająco(
do zawinięcia do cyfr (tak około 65k(
dla każdej cyfry). Pozwoliłoby to;
na coś innego, ale nie jestem pewien, czy jest to przydatne.;
, ale w tej chwili nie mogę.Haskell , wynik 13, 86 bajtów
Wypróbuj online!
Dziękuję Ørjanowi Johansenowi za znalezienie sposobu, aby naprawić nakładanie się mojego listu przy jednoczesnym zachowaniu wyniku trzynastu. (Również za wszelkie starania, aby powiadomić mnie o tym, gdy ta odpowiedź została usunięta).
pi/pi
jest1.0
.sum[]
ocenia do0
,0^0
do1
isum[1,1]
do2
.3
po9
prostu się rozszyfrować.length"eeeeeeeeee"
zwraca długość łańcucha, który wynosi10
.2+2+2+2+2+2
jest12
.0xD
jest szesnastkowy dla13
.źródło