Jak wysoko możesz liczyć?


154

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 2i 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 xi =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. Tak 4.000jest 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!


4
Język Headsecks dba tylko o trzy dolne bity każdej postaci i w trywialny sposób uzyska wynik 64. Jest częściowo niezależny od symboli, ale nie do końca. Myślę, że ostatnia reguła powinna obejmować również języki częściowo niezależne od symboli, ale nie jestem pewien, jak to sformułować.
Dennis

1
Jeśli chodzi o zasadę fragmentu kodu, czy nadal musimy uwzględnić użycie / import? I czy dozwolony jest import statyczny (bez włączania go do fragmentu kodu)?
Kevin Cruijssen

1
@KevinCruijssen możesz pominąć rzeczy, które są potrzebne do każdego programu / funkcji. Na przykład, nie potrzebujesz żadnych #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 :)
Stewie Griffin

1
Masz prawo głosować, jakkolwiek lubisz @tuskiomi, ale moim zdaniem jest to dobra zasada. Znaki białych znaków to tylko bajty, tak jak każdy inny znak. Dlaczego powinni być traktowani inaczej? Również język Biała spacja wygrałby osuwisko, ponieważ zawiera tylko spację, tabulator i przesunięcie linii. Dzięki, że powiedziałeś, dlaczego przegłosowałeś :-)
Stewie Griffin,

1
@StewieGriffin Pozwoliłbym przynajmniej na spacje, ale hej, nie jestem tobą.
tuskiomi 18.08.17

Odpowiedzi:


146

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)

""**""
~(~/~//~/~/)/~/~/
3
4
!NaN- -!NaN- -!NaN- -!NaN- -!NaN
6
7
8
9
++[[]][+[]]+[+[]]
11
'lengthlength'.length
222>>2>>2
`${``^``}xE`^``
0XF
C=CSS==CSS;C<<C<<C<<C<<C
555555555555555555555%55

Nieużywane znaki:

#&,:?@ABDGHIJKLMOPQRTUVWYZ\_bcdfijkmopqrsuvwyz|

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ć.

  1. **jest operatorem potęgowania w ES7. Pusty łańcuch po wymuszeniu na liczbę staje się 0, więc oblicza się 0 ** 0to 1zgodnie z JavaScript.
  2. Trochę śmieszne, ale działa. /~/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. Po prostu 3.
  4. Teraz po prostu 4.
  5. NaNjest falsy tak !NaNznaczy true, która jest równoważna 1. Wyrażenie staje się więc 1 - -1 - -1 - -1 - -1= 1 + 1 + 1 + 1 + 1= 5.
  6. Po prostu 6.
  7. Po prostu 7.
  8. Po prostu 8.
  9. Po prostu 9.
  10. To wymaga trochę magii JSF *** . +[]jest 0, więc [[]][+[]]zwraca pierwszy element [[]](to znaczy []) i ++zwiększa to 1. Następnie +[+[]]dodaje tablicę [0], która jest wymuszana na łańcuch i tworzy "10".
  11. Po prostu 11. Pierwotnie użyłem 11&1111dla 3 i 33/311, dopóki nie zdałem sobie sprawy, jak głupi jestem ...
  12. Ta strategia działałaby na dowolnej liczbie: utworzyć ciąg długości 12i użyć .length.
  13. Właśnie pomieszałem z 2S i >S przez chwilę, aby uzyskać ten. Mam znowu szczęście: 222 >> 2jest 55i 55 >> 2jest 13.
  14. Ten jest dość trudny. Podstawową ideą jest tworzenie 14w hex ( 0xE), ale potrzebujemy cyfry w 0innym miejscu. Zamiast tego wstawiamy wynik ``^``do ciągu xE; pusty ciąg wymuszony na liczbę to 0, więc to zwraca 0 ^ 0= 0. Następnie wynik jest XORowany z pustym ciągiem, który konwertuje obie wartości na liczby; "0xE" ^ ""jest 14.
  15. Jest to teraz całkiem proste: 0XFjest literałem szesnastkowym o wartości 15.
  16. Najtrudniejszy ze wszystkich? Najpierw ustawiamy zmienną Cna CSS == CSS(to znaczy true). Następnie bierzemy wynik i wykonujemy << Ccztery razy, co w zasadzie mnoży 1przez 2 ** 4.
  17. JavaScript zaczyna tracić precyzję liczb całkowitych przy 2 53 , co pozwala 555...555%55zwrócić liczbę, która nie jest 0lub 5. Miałem szczęście, grając tutaj.

Strategie, które działałyby na wielu liczbach:

  • -!NaNdziałałby na dowolnej liczbie (obecnie 5), choć robi się bardzo duża.
  • ~/~/działałby na dowolnej liczbie (obecnie 2), choć robi się bardzo duży bardzo szybko.
  • +[]działałby na dowolnej liczbie (obecnie 10), chociaż jest to zdecydowanie najłatwiejsze na 10lub 11.
  • .length działałby na dowolnej liczbie.
  • `${-``}xE`-`` działałby na prawie każdym numerze, jeśli zrobiłbyś to dobrze.
  • C<<Cdziałałby na dowolnej potędze dwóch (obecnie 16) lub dowolnej int, jeśli byś to uwzględnił |.

3
To całkiem niesamowite :)
Steve Bennett

1
Może istnieć jakiś podstępny sposób użycia jednej z window.właściwości, na przykład defaultPixelWidth, ale wszystkie wydają się zawierać albo lalbo e. Możesz dostać kolejne 0, URL | URLale to niewiele pomaga.
Steve Bennett,

1
Znalazłem też „focus”, ale wciąż nie widzę, jak dojść do 18: „focus” to funkcja (). „focus & focus” to 0. „focus (URL)” jest niezdefiniowany.
Xantix,

1
Obecni operatorzy, którzy zwiększają:+ - * ~ < x X length
14m2

1
Brak liczb jest ograniczony głównie do tych symboli. Każda liczba zawiera jedną z 1 2 3 4 5 6 7 8 9 + - * ~ < x X length. Więc zanim go rozwiązać nie możemy iść 18
l4m2

90

Galaretka , 47 liczb całkowitych, 519 bajtów

e
BI$⁼#
⁾⁾⁾Ụ^/
ı***ıḞḞ
5
6
7
.::::
9
EȮ<
⁻GṘ
=`p`VV×`DQV
~A~A~A~A~A~A~A~A~A~A~A~A~A
⁷ṾṾṾw
⁴ḟ€⁴Ṁ
mmmmċ
ṭṭṭṭṭṭṭṭḍḄḄḄḄḄḄḄḄḄ
+Ṇ+Ṇ+Ṇ+Ṇ+Ṇ+Ṇ+Ṇ+Ṇ+Ṇ+Ṇ+Ṇ+Ṇ+Ṇ+Ṇ+Ṇ+Ṇ+Ṇ+Ṇ
CNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNC
ĖḌĖḌ
ṫṣȦJṫȦ⁸ȦJ
22
“@ṃ»
!ḤḤ!
³HH
ØaM
;;;;;;;;;;;;;;;;;;;;;;;;;;;¬¬ḅ¬
irið8c
⁶ḲĠṂ°İṂĊ
œṡ¹ẆẆTUṖṖṖṖP
ȷ½RṪ
LµdddddµFL
33
WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWŒḊ
ẇɓæ«æ«æ«æ«æ«|æ«|
⁹ṚḢ²
‘‘‘0‘‘‘‘‘‘‘
’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’ạ
-____---__________
”(O
⁵ḶxḶ⁵ị⁵ḶxḶḣṢ
⁽{ʂ%⁽{}
ẊẠżv©żvżvżvọ®®Ạżvżvżvọ®
44
111111l11&K1111111Kl11&
,SS¶ỊỊ,ÇS¶ÇÑÇÇÇÑ
ÆnÆnÆnÆnÆnÆnÆnÆnÆnÆnÆnÆnÆnÆnÆn

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

e

Istnieją testy atom Jeśli wartość 0 należący do argumentu 0 . Tak, więc ezwraca 1 .

BI$⁼#

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 i Izwraca pustą tablicę (falsy); jeśli są co najmniej dwie cyfry, Izwraca 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 .

5
6
7

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 .

9

Kolejny dosłowny.

EȮ<

Cały równy atom Ezwraca 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ęc Ezwraca 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

⁻GṘ

Siatki atom Gstara 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 .

=`p`VV×`DQV

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 poczekuje 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 Vzamienia 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ępnie Vanalizuje ciąg, uzyskując [11] . Jeszcze raz Vzamienia 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 atom Qodrzuca drugie 1 i Vponownie włącza listę cyfr do liczby całkowitej, która wynika z ich łączenie, zwracając 12 .

~A~A~A~A~A~A~A~A~A~A~A~A~A

~jest bitowym NIE atomem. Z arytmetyką dopełniania dwóch odwzorowuje argument z na ~ z = - (z + 1) . Ajest atomem wartości bezwzględnej , więc odwzorowuje - (z + 1) = z + 1 . Przy początkowej wartości zwracanej 0 trzynaście kopii ~Azwrotu 13 .

⁷ṾṾṾw

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 oknaw 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] .

mmmmċ

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 mkonkatenató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 .

CNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNC

Cjest atomem dopełniacza i odwzorowuje swój argument z na 1-z . Njest atomem negującym i odwzorowuje swój argument z na -z . Razem CNodwzorowuje z na - (1-z) = z-1 , więc osiemnaście kopii zamienia domyślny argument 0 na -18 . Ostateczne zastosowanie Cplonów 1 - (-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

ṫṣȦJṫȦ⁸ȦJ

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 Jusuwa 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 . JAtom sprzyja 0 do [0] , a następnie powraca do swojej listy indeksów ( [1] ), która jest pośrednio drukowanych po zakończeniu programu.

22

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 .

³HH

W przypadku braku argumentów wiersza poleceń stała ³ma wartość 100 . Dwie inwokacje z Hkolei 100 na 50 , a następnie 50 na 25 .

ØaM

Stała Øazawiera małe litery. Maksymalny atom Mdaje 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 .

irið8c

Wskaźnik atom isprzyja jego lewy argument 0 do [0] , a następnie znajdowany jej prawym argumencie 0 w tej tablicy, otrzymując 1 .

Zakres atom rkonstruuje 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 funkcji iznajduje 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 ). cw 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 .

œṡ¹ẆẆTUṖṖṖṖP

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 Tzawiera 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 atom Uodwró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

ȷ½RṪ

ȷjest skrótem dla 1 × 10 3 = 1000 . Pierwiastek atom ½daje 31,6 , którego zakres atom Rprzekształca [1, ..., 31] . W końcu atom ogona wydobywa ostatni element, zwracając 31 .

LµdddddµFL

Długość atom Lpromuje 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 dwydajnoś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] . ddział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 atom Funnests tej tablicy, uzyskując płaską tablicę jeden oraz 31 zerami. Wreszcie Lzajmuje długość wynikowego, zwracając 32 .

33

Kolejny repdigit, kolejny dosłowny.

WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWŒḊ

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 *.

‘‘‘0‘‘‘‘‘‘‘

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.

”(O

”(jest literałem znaku, a atom porządkowyO wyszukuje punkt kodowy Unicode, uzyskując 40 .

41–47

⁵ḶxḶ⁵ị⁵ḶxḶḣṢ

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 atomu x. 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 .

ẊẠżv©żvżvżvọ®®Ạżvżvżvọ®

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 atom vzamienia 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 argument vi po prostu daje wynik [10] .

Kopiowania Szybkie ©przywiązuje do vi kopiuje jej wyniku do rejestru. Późniejsze wystąpienia atomu przywracania® (nilad) będą pobierać [10] z rejestru.

Kolejne trzy kopie żvpracy 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żvdodaje 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.

44

Kolejna repedycja, jeszcze jedna dosłowność.

111111l11&K1111111Kl11&

Przede wszystkim literał 111111ustawia argument i początkową wartość zwracaną na 111111 . Inne serie 1są również dosłowne.

ljest 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 Kdołą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 1111111znajduje się nie do rozdzielenia nilad, więc poprzednia zwracana wartość ( [4] ) jest drukowana do STDOUT, a następnie zastępowana wartością nilad ( 1111111 ). Knastę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, l11oblicza log 11 1111111 ≈ 5,81 , a następnie &zwraca [5,81 i 111111] = [5 i 111111] = [5] .

,SS
ỊỊ,ÇS
ÇÑÇÇÇÑ

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 atom S- monady który promuje całkowitą argumentu Z do [Z] i zmniejsza argument tablicy addycja. Kiedy link ,SSjest 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 o S. 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 .

ÆnÆnÆnÆnÆnÆnÆnÆnÆnÆnÆnÆnÆnÆnÆn

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ń Ænoblicza piętnastą liczbę pierwszą, czyli 47 .


7
Spędziłem cały dzień próbując dogonić Neima 38, a następnie przewijam w dół i widzę to. Wyzwanie przyjęte!
Kudłaty

1
TL; DR Musisz policzyć do 47 i jesteś czarodziejem w Jelly.
stylu kaskadowym

Czy wszystkie „atomy” są pojedynczymi bajtami wymaganymi w wyzwaniu? Jeśli tak, jakie to kodowanie?
M.Herzkamp

4
@ M.Herzkamp Jelly używa własnej strony kodowej .
Dennis

1
Po raz pierwszy szczegółowo przeczytałem wyjaśnienie. To naprawdę imponujące. Niektóre z nich są po prostu śmieszne :-)
Stewie Griffin,

62

pieprzenie mózgu , wynik 2, 255 144 10 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. : P Ta 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 :

[ 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 ]
  ^

+  increment the current cell

[ 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 ]
  ^

2 :

[ 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 ]
  ^

>  move to the next cell
-- decrement the current cell twice

[ 0 |254| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 ]
      ^

[  while the current cell is not 0
<  move to the previous cell
-  decrement the current cell

[255|254| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 ]
  ^

>  move to the next cell
-  decrement the current cell

[255|253| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 ]
      ^

]  repeat while the current cell is not 0

...

[ 3 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 ]
      ^

[ 2 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 ]
  ^

[ 2 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 ]
      ^

5
Teraz zrób to w spryskaniu mózgu. : P
DJMcMayhem

38

Neim , wynik 38, 327 bajtów

1: 𝔼
2: 2
3: 3
4: 4
5: 5
6: 6
7: 7
8: 8
9: 9
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: 𝐓0𝐓𝔻0𝐓𝔻0𝐓𝔻0𝐓𝔻0𝐓𝔻0𝐓𝔻0𝐓𝔻0𝐓𝔻0𝐓𝔻0𝐓𝔻0𝐓𝔻0𝐓𝔻0𝐓𝔻0𝐓𝔻0𝐓𝔻0𝐓𝔻0𝐓𝔻0𝐓𝔻0𝐓𝔻0𝐓𝔻0𝐓𝔻0𝐓𝔻0𝐓𝔻0𝐓𝔻0𝐓𝔻0𝐓𝔻0𝐓𝔻0𝐓𝔻0𝐓𝔻0𝐓𝔻0𝐓𝔻0𝐓𝔻0𝐓𝔻0𝐓𝔻
36: ℂ𝐋𝐠𝐋𝐠𝐋𝐠𝐋𝐝𝐬𝕏𝐬
37: α𝕊α𝕊α𝕊α𝕊α𝕊α𝕊α𝕊α𝕊α𝕊α𝕊α𝕊α𝕊α𝕊α𝕊α𝕊α𝕊α𝕊α𝕊α𝕊α𝕊α𝕊α𝕊α𝕊α𝕊α𝕊α𝕊α𝕊α𝕊α𝕊α𝕊α𝕊α𝕊α𝕊α𝕊α𝕊α𝕊α𝕊
38: 𝔸𝔸𝔸𝔸𝔸𝔸𝔸𝔸𝔸𝔸𝔸𝔸𝔸𝔸𝔸𝔸𝔸𝔸𝔸𝔸𝔸𝔸𝔸𝔸𝔸𝔸𝔸𝔸𝔸𝔸𝔸𝔸𝔸𝔸𝔸𝔸𝔸𝐥

Wyjaśnienie:

  • Dla 1 używamy tokena „sprawdź równość”, wykorzystując tutaj to, że kiedy Neim próbuje wyskoczyć z pustym wejściem, dostaje 0. Gdy 0 i 0 są równoważne, to wypycha 1, który jest domyślnie drukowany
  • Od 2 do 9 używamy po prostu literałów numerycznych.
  • Od 10 do 32 Neim faktycznie ma jedną stałą bajtową dla wszystkich (tak, to szalone).
  • W przypadku 33 używamy tylko polecenia przyrostu. W pierwszym bajcie Neim próbuje wyskoczyć coś, aby go zwiększyć, ale ponieważ dane wejściowe są puste, domyślnie wyskakuje 0.
  • Dla 34 używamy tego samego podejścia, ale zmniejszamy i przyjmujemy wartość bezwzględną.
  • W przypadku 35 wykorzystujemy fakt, że zero silnia jest jeden, i wykorzystujemy to, powielając jeden i wielokrotnie dodając
  • Dla 36 używamy 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.
  • Dla 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)
  • Dla 38, ponownie używając domyślnego 0 dla pustych danych wejściowych, ciągle dodajemy 0 do siebie, tworząc długą listę, a następnie obliczając długość.

Można spróbować tutaj


3
Zmieszałeś coś około 36-37.
Erik the Outgolfer

2
Czy te znaki specjalne nie są zakodowane więcej niż 1 bajtem? Jeśli tak, to 860 bajtów zgodnie z licznikiem bajtów mothereffa i zgodnie z regułami wyzwania 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?
Hankrecords


2
Nie używałeś jeszcze tej postaci 1. Z pewnością możesz to wykorzystać?
Bergi,

34

Python 2, 15

Oto początek, szukam więcej

Dzięki Leo, którego wskazówka pomogła mi dotrzeć do 15

[[[]]>[]][[]>[]]>>[[]>[]][[]>[]]

2

import math
print'%i'%math.pi

((()<())<())<<((()<())<())<<((()<())<())

5

6

7

8

9

11^1 

33/3

4--4--4

__debug__+__debug__+__debug__+__debug__+__debug__+__debug__+__debug__+__debug__+__debug__+__debug__+__debug__+__debug__+__debug__

q=""=="";qq=q=="";qqq=~q*~q*~q;~qqq*~q*~qq

0xF

2
Możesz użyć -~-~-~-~-~-~-~-~-~[[]==[]][[]<[]]dla 10 i 0xDdla 13 dla niższej liczby bajtów ogółem
2017

Czy mógłbyś w jaki sposób wykorzystać fakt, który ma ''is''wartość true, aby utworzyć inną liczbę?
Notts90

@ Nots90 Niestety nie mam operacji, aby cokolwiek z tego zrobić. Jeśli znajdziesz jakiś sposób na tworzenie nowych liczb lub jeśli dasz mi znać
booleany

1
14 brakuje parens zamykających:((()<((),))|(()<((),))<<(()<((),))|(()<((),))<<(()<((),))<<(()<((),)))<<(()<((),))
TemporalWolf

1
Dla string.printablec, 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
przypomnienia

23

Japt , 448 bajtów, wynik 42

Duża współpraca Shaggy , ETHproductions i Oliver .

v
y
Íà
Qiiii)iiii)âQ
ÂHq
LÁL
´Vn´VnVnVn
8
9
A
B
C
D
E
F
G
J-----J---J---J---J
[¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾]x
;Iìw
~~½e½e½e½e~½e½
++T+++T+++T+++T+++T+++T
22
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
4á
5²
°UU°°°U°°U°°U°°U°°U
»³³
7/¼
$'_____________________________b'$bb
ZµÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉ
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"aa
Sc
33
Mg011
##
6p
Rí í í í í è.
`¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥`l
¨N|N¹òò¹m···m|¹mò¹m···m|¹mò¹m···m|¹o
º¤¤*º¤*º¤
(Å<<(Å<<(Å<<(Å<<(Å<<(Å^(Å<<(Å<<(Å<<(Å^(Å
Y±Y¶YY±YY±Y±Y¶YY±YY±Y±Y¶YY±Y

Pozostały następujące (przydatne) znaki:

!%&,:=>?@OPWX\dfhjkrstuz{}¡¢£¦§©ª«¬®¯¸ÀÃÆÇÈÐßãäåæçéêëîïñóôõö×øÿ

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 .


v

Po zastosowaniu do liczby vmetoda 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 dla U) jest podzielna przez 2 , więc daje nam to nasze 1 .


y

Bardzo podobny do pierwszego. Po zastosowaniu do liczby, ymetoda 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 dla n(2)lub 2- this. Ponieważ nie mamy wejście, to domyślnie thisdo 0, co skutkuje 2-0 = 2.

àzwraca liczbę kombinacji [1...this], która zwraca 3


Qiiii)iiii)âQ

Qdomyślnie jest to pojedynczy znak cudzysłowu. ina sznurku wstawia na początku kolejny sznurek; jak wyjaśniono w punkcie 3 , każdy iiii)jest równoważny z .i("i".i("i"))JS, wstawiając w ten sposób dwie kopie ina początku łańcucha. Zrób to dwa razy, a otrzymasz ciąg iiii". âQnastępnie symuluje .search(Q), podając indeks pierwszego "w ciągu, który wynosi 4 .


ÂHq
Hjest stałą dla 32 . Po zastosowaniu do liczby qmetoda, 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ęc Hqdaje 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ÁL
Ljest wstępnie ustawiony na 100 i Ájest skrótem do >>>(przesunięcie bitowe w prawo z zerowym wypełnieniem). 100>>>100jest taki sam jak 100>>>4(prawy operand otacza mod 32), czyli 6 .


´Vn´VnVnVn

Jak wspomniano wcześniej, Vdomyślnie 0 . ´jest skrótem dla --operatora, więc kod jest równoważny do następującego JS:

(--V).n((--V).n(V.n(V.n())))

X.n(Y)jest równoważne Y - X lub -X + Y ; pierwsze --Vzwraca -1 , a drugie -2 , więc jest to odpowiednik - (- 1) + (- (- 2) + (- (- 2) + - (- 2))) . Upraszczając, otrzymujemy 1 + 2 + 2 + 2 = 7 .


8
9

Dosłownie 8 i 9 .


A
B
C
D
E
F
G

Są to stałe dla 10 - 16 włącznie.


J-----J---J---J---J

Jjest 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 .


[¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾]x

¾jest, jak można się domyślić, skrótem do .75. Umieszczamy 24 tablice 0,75 w tablicy, a następnie sumujemy x, dając 0,75 * 24 = 18 .


;Iìw

Myślę, że to mój ulubiony. ;na początku programu zmienia wartości niektórych stałych Japt; bez niego Ijest 64 , ale wraz z nim Ijest 91 . ìwkonwertuje go na listę cyfr i działa wna liście, odwracając tablicę, a następnie konwertuje z powrotem na liczbę, aby uzyskać nam 19 .


~~½e½e½e½e~½e½
½jest skrótem do .5. ena liczbę x przyjmuje argument y i zwraca x * 10 y . Tak więc łańcuch obliczeń, który ma miejsce, to:

           ½e½     1.5811  (.5 * sqrt(10))
          ~       -2
        ½e         0.005  (.5 * (10 ** -2))
      ½e           0.5058
    ½e             1.6024
  ½e              20.0138

A finał ~~służy do doliczenia tego do liczby całkowitej, co daje wynik 20 .


++T+++T+++T+++T+++T+++T
Tjest ustawiony na 0 . ++jest operatorem przyrostowym w JS, a także w Japt; T+++Tjest analizowany jako (T++) + T, ale ++T+++Tjest analizowany jako (++T) + (++T), więc jest to równoważne z kodem JS

(++T) + (++T) + (++T) + (++T) + (++T) + (++T)

Wynik to 1 + 2 + 3 + 4 + 5 + 6 , co daje 21 .


22

Dosłownie 22 .


ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

Äjest skrótem do +1, więc suma ta wynosi 23 1 s.


Znajduje to liczbę permutacji [1, 2, 3, 4], która wynosi 4! = 24 .


²to skrót do p2, który podnosi liczbę do potęgi dwóch. 5 ** 2 to 25 .


°UU°°°U°°U°°U°°U°°U

°jest skrótem dla ++operatora, lub nie mogą być przetwarzane jako takie + +. Jak wspomniano wcześniej, gdy nie ma danych wejściowych, Udomyślnie wynosi 0 . Zatem kod jest równoważny (++U), (U++) + + (++U) + + (++U) + + (++U) + + (++U) + + (++U), który jest bardzo podobny do # 17 : Ujest najpierw zwiększany do 1, a następnie wielokrotnie zwiększany i dodawany tak, że końcowy wynik to 1 + 3 + 4 + 5 + 6 + 7 = 26 .


»³³

³jest skrótem do pmetody 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 i wywołać jako funkcję (tzn. Będzie mapowana przez .p(3)). W tym przypadku jednak ("p",3)zwraca nasze 3, a następnie zwiększamy do potęgi 3( pjest to metoda potęgi po zastosowaniu do liczby), co daje nam 27 .


7/¼

¼, jak zapewne już wiesz, jest skrótem .25, więc oblicza 7 / 0,25 = 28 .


$'_____________________________b'$bb

Wszystko owinięte w $symbole jest traktowane jako czysty JavaScript, więc mamy ciąg 29 znaków podkreślenia, po których następuje b. (Bez $, 'byłby ciągiem jednoznakowym.) bMetoda zastosowana do ciągu zwraca pierwszy indeks jego argumentu w tym ciągu. Jak wyjaśniono w punkcie 3 , ostatni bjest konwertowany na ciąg, więc chwytamy pierwszy indeks bw naszym ciągu, który wynosi 29 .


ZµÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉ

µjest skrótem do -=i Édla -1. Efektem jest odjęcie 30 kopii -1 od 0 , co daje 30 .


"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"aa

Bardzo jak # 29. aMetoda, po nałożeniu na sznurku, zwraca ostatni indeks swojej argumentacji w tym ciąg. Przy zastosowaniu indeksowania 0 ostatni indeks aciągu 32 as wynosi 31 .


Sc

Sjest predefiniowany do pojedynczej spacji i cna łańcuchu jednokolumnowym zwraca swój kod znakowy, co daje 32 .


33

Dosłowny 33 .


Mg011

MgNzwraca liczbę N-tego Fibonacciego. 011ma 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.


6p

pjest potęgowaniem i bez drugiego argumentu domyślnie przyjmuje wartość 2 ; w ten sposób wypisuje 6 ** 2 = 36 .


Rí í í í í è.

Ten jest dość trudny. Rdomyś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ąc Rzamiast literału nowej linii)

R
R0
R001
R0010213
R001021304251637
R0010213042516370849210511112613314715

Ciekawe, jak każdy wpis jest po prostu przedrostkiem następnego ... Ale w każdym razie, ostatnia część è., liczy, ile dopasowań /./gznaleziono w wyniku. Ciąg zawiera 38 znaków; jednak ponieważ /./gpasuje tylko do znaków nowej linii, wynik wynosi 37 .


¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥l

Wsteczne zaznaczają skompresowany ciąg i ¥rozpakowują się do ll. lna sznurku daje length, więc po dekompresji daje to 38 .


¨N|N¹òò¹m···m|¹mò¹m···m|¹mò¹m···m|¹o

Ooo, chłopcze, ten jest doozy. Najpierw generujemy za truepomocą ¨N( ¨oznacza >=, i Nbez danych wejściowych jest pusta tablica), a następnie przekształcamy to w za 1pomocą |N. Od tego momentu robi się całkiem szalony:

ò    Inclusive range [0..1],            [0, 1]
 ò   making each an inclusive range.    [[0], [0, 1]]
m·   Join each on newlines.             ["0", "0\n1"]
·    Join on newlines.                  "0\n0\n1"
·    Split on newlines.                 ["0", "0", "1"]
m    Map each item X and index Y to     
 |     X | Y.                           ["0" | 0, "0" | 1, "1" | 2] -> [0, 1, 3]
m    Map each by 
 ò     inclusive range.                 [[0], [0, 1], [0, 1, 2, 3]]
m··· Same as before.                    ["0", "0", "1", "0", "1", "2", "3"]
m|   Bitwise OR thing again.            [0, 1, 3, 3, 5, 7, 7]
mò   Map each by inclusive range.       [[0], [0, 1], ..., [0, 1, 2, 3, 4, 5, 6, 7]]
m··· Same as before.                    ["0", "0", ..., "5", "6", "7"]
m|   Bitwise OR again.                  ["0"|0, "0"|1, ..., "5"|30, "6"|31, "7"|32]
                                        -> [0, 1, ..., 31, 31, 39]

(Te ¹są tylko substytutami przybliżeń i zostały pominięte). Końcowy onastępnie wyskakuje i zwraca ostatni element w tablicy, dając 39 .


º¤¤*º¤

Przeważnie taka sama sztuczka jak w przypadku # 3 . ¤jest skrótem do smetody 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 do smetody z argumentem 1 . W tym przypadku jednak każda transpiluje się do ("s", 1), co zwraca tylko 1 . 1<<1<<1<<1<<1<<1wynosi 32 , i 1<<1<<1<<1jest 8 ; są one XORed razem, 1aby uzyskać 41 .


Y±Y¶YY±YY±Y±Y¶YY±YY±Y±Y¶YY±Y

±jest skrótem do +=i dla ===. Oznacza to, że kod jest rzeczywiście

Y+=Y===Y,Y+=Y,Y+=Y+=Y===Y,Y+=Y,Y+=Y+=Y===Y,Y+=Y

Y===Y jest zawsze prawdziwe, więc możemy to uprościć:

Y+=1,Y+=Y,Y+=Y+=1,Y+=Y,Y+=Y+=1,Y+=Y

0 + 1 = 1 ; 1 + 1 = 2 ; 2 + (2 + 1) = 5 ; 5 + 5 = 10 ; 10 + (10 + 1) = 21 ; 21 + 21 = 42 .


Wow, teraz robi się świetnie :-) Możesz użyć Iq8, aby 8wrócić, ale musisz znaleźć coś jeszcze dla 19.
ETHprodukcje

@ETHproductions: służy tylko qdo 5umożliwienia mi ldodania dodatkowego numeru. Pracuję nad alternatywą dla, 2aby =odzyskać.
Kudłaty

@Shaggy Możesz użyć dla 2. L>>Lmoże uwolnić 6. #w s Åmoże uwolnić ;iI
Oliver

Dobra sztuczka dla 2, @obarakon; Użyłem czegoś podobnego do uwolnienia 3. Niestety to nie zadziała dla 19, jak już użyłem #dla 21.
Shaggy

Myślę, że możesz zamienić 22 na 18, aby zaoszczędzić kilka bajtów i wrócić *i^
ETHproductions

18

PHP, wynik 17, 130 bajtów

użyte znaki ADEFGIKLMOPRSTVXYZ=_![]()<>'"#$,;/-+*|^&0123456789afhnprstwx

Z==Z
FTP_MOREDATA
';'&w
![]<<![]<<![]
5
6
"#"|"$"|"1"
8
SIGKILL
333333>>3>>3>>3>>3>>3
99/9
22-2-2-2-2-2
strspn(XXXXXXXXXXXXXX,X)
7+7
0xf
4*4
ha^YV

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

Z==Z
":"&"w"    
M_PI|[]
TRUE<<TRUE<<TRUE
5
6
A^v    
8
9
!$s.strlen($s)    
77/7
3+3+3+3
111>>1>>1>>1    
22-2-2-2-2
0xf
4*4

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

Z==Z
2
M_PI^[]
4
5
6
ERA%11
8
9
!$s.strlen($s)
77/7
3+3+3+3
0xd    
-~-~-~-~-~-~-~-~-~-~-~-~-~-~-NULL

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!


17

R, wynik 13 14

F^F                       # F==0 in R
q=""=="";q--q             # ""=="" is TRUE, TRUE == 1 (Thanks WheatWizard)
3
4
5
6
7
8
9
1e1                       # scientific notation for 10
22/2
T+T+T+T+T+T+T+T+T+T+T+T   # T == 1
0xD                       
sum(mtcars$vs)            # mtcars is a built-in dataset, summing the $vs column gives 14

Dostałem dodatkowy dzięki user2390246.

Użyte znaki:

0123456789acemqrstuvxDFT^=";-/+()$


1
Możesz rozciągnąć do 14, jeśli wolno nam korzystać z wbudowanych zestawów danych. 1:, F^F2 "n"%in%"n"+"n"%in%"n":; 3-9: cyfry, 10, 1e1, 11: 22/2,: 12 T--T--T--T..., 13: 0xD14:sum(mtcars$vs)
user2390246

Doskonałe wykorzystanie %i myślenie o użyciu wbudowanych zestawów danych. Nie rozumiem, dlaczego nie byłoby dobrze.
BLT

Zastanawiałem się, czy byłoby możliwe ponowne uzyskanie jeszcze jednego przy użyciu wbudowanych danych: gdyby istniał zestaw danych z nazwanymi wierszami i kolumnami, można by użyć polecenia zgodnego z wierszem 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%.
user2390246

Hmmm. Dla 2, można użyć sztuczki z WheatWizard za Pythona odpowiedzi: q=""=="";q+q. To uwolniłoby korzystanie z liter ii n. Nie mam teraz czasu, żeby się tym przyjrzeć, ale założę się, że gdzieś tam jest dodatkowy ...
user2390246

Myślę, że masz rację. Głównym problemem wydaje się być znalezienie zestawu danych, który nie używa i, n, s, u, m, t, c, a, r, e, x lub v. Odzyskanie niektórych liter powinno pomóc.
BLT

16

MATL , wynik 21 22 23 liczb (273 bajtów)

Dzięki J Doe za zwiększenie od 22 do 23 liczb!

0~
'bd'd
{P}gk
HH^
5
6
7
8
9
3 3.333333333333333*
11
IEE
[B]Yq
llllllllllllllNwxwxwxwxwxwxwxwxwxwxwxwxwxwx
KUKUa-
4W
FFFFFFFFFFFFFFFFFn
TTTTTTTTTTTTTTTTTTs
rrrrrrrrrrrrrrrrrrrhhhhhhhhhhhhhhhhhhz
OOOOOOOOOOOOOOOOOOOOvZyX>
JJJJJJJJJJJJJJJJJJJJJ++++++++++++++++++++J/
22
`@QQQQQQQQQQQQQQQQQQQQQQ@@<

Wypróbuj online! Każdy fragment kodu w łączu jest zakończony alboD(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

0~

Push 0. Negować. Daje true, który jest wyświetlany jako 1.

'bd'd

Wcisnąć sznurek 'bd'. Kolejna różnica między punktami kodowymi znaków.

{P}gk

Wciśnij tablicę komórek zawierającą liczbę pi. Konwertuj na tablicę numeryczną (tj. Na pojedynczą liczbę). Zaokrąglić w dół.

HH^

Naciśnij 2dwa razy. Moc.

5

Literał liczbowy.

6

Literał liczbowy.

7

Literał liczbowy.

8

Literał liczbowy.

9

Literał liczbowy.

3 3.333333333333333*

Push 3. Push 3.333333333333333. Zwielokrotniać. Ze względu na dokładność zmiennoprzecinkową daje to 10.

11

Literał liczbowy.

IEE

Push 3. Pomnóż 2dwukrotnie.

[B]Yq

Wciśnij [6](co jest takie samo jak 6). Oblicz n-tą liczbę pierwszą.

llllllllllllllNwxwxwxwxwxwxwxwxwxwxwxwxwxwx

Naciśnij 114 razy. Liczba elementów w stosie. Wyczyść resztę stosu.

KUKUa-

Push 4. Kwadrat. Zrobić to samo. Any: daje 1. Odejmować.

4W

Push 4. 2wychowany do tego.

FFFFFFFFFFFFFFFFFn

Wciśnij tablicę [false false ... false](17 razy). Liczba elementów w tablicy.

TTTTTTTTTTTTTTTTTTs

Wciśnij tablicę [true true ... true](18 razy). Suma tablicy.

rrrrrrrrrrrrrrrrrrrhhhhhhhhhhhhhhhhhhz

Wciśnij 19 liczb losowych pobranych z przedziału (0,1). Łącz w poziomie 18 razy. Liczba niezerowych elementów w tablicy.

OOOOOOOOOOOOOOOOOOOOvZyX>

Naciśnij 020 razy. Połącz zawartość stosu w pionie (daje wektor kolumny). Rozmiar: daje tablicę [20 1]. Maksymalna liczba tablic.

JJJJJJJJJJJJJJJJJJJJJ++++++++++++++++++++J/

Naciśnij 1j(jednostka urojona) 21 razy. Dodaj 20 razy. Podziel przez 1j.

22

Literał liczbowy

`@QQQQQQQQQQQQQQQQQQQQQQ@@<

Wykonaj ... while loop ( `) z niejawnym zakończeniem. W pierwszej iteracji przesuwa wskaźnik iteracji ( @) i zwiększa go ( Q) 22 razy, co daje wynik 23. 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 prefiks X.
  • Obecnie nieużywane i potencjalnie użyteczne: :,A

Czy miałbyś coś przeciwko uwzględnieniu liczby bajtów?
Okx,

@Okx Uwzględniono teraz
Luis Mendo

15

Vim 8 w systemie Windows, wynik 13, 104 bajtów

1
2
3
4
5
6
7
^R=&ts^@
9
8^O^A^O^A
0^[^X^X^X^X^X^X^X^X^X^X^X0x
:h<CR>wwwwwwwwwwwy$:q<CR>p
grgKjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjYZZvPWWWllld|llD

^{keystroke}reprezentuje <C-{keystroke}>, tak ^Xjest <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 &tabstopdo &ts. &tsnastę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:

*help.txt*  For Vim version 8.0.  Last change: 2016 Sep 12

I sekwencja ws przechodzi do 12, w którym to punkcie y$kopiuje liczbę. Następnie jest wklejany do edytora za pomocą p.

Fragment 13 jest grgKjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjYZZvPWWWllld|llDdziełem @DJMcMayhem za wymyślenie go. Działa to tylko w systemie Windows. Fragment przeszukuje menu pomocy w poszukiwaniu poleceń rozpoczynających się od g. Następnie przesuwa się w dół za pomocą, jaby dostać się do tej linii:

|g?|        g?      2  Rot13 encoding operator

po czym kopiuje i wkleja w buforze. Następnie wszystko oprócz 13 jest usuwane z bufora.


Fragmenty są dozwolone.
Leaky Nun

Dałby ^R=&tabstop+&tabstop+&tabstop<CR>Pci 12, lub jest <CR>już używany z powodu ^M?
L3viathan

1
Tak, miałem na myśli, <CR>kiedy powiedziałem ^M, ale dzięki, teraz zajmę się usunięciem ^Mfragmentu 8 :)
Krowy szarlatają

1
@WheatWizard Klawisz sterujący nie jest liczony jako naciśnięcie klawisza ani jako bajt, ale jest używany w połączeniu z innymi klawiszami i będą one liczone jako bajty. Na przykład Ctrl + A daje bajt, 0x01podczas gdy Ctrl + X daje 0x18. I oczywiście te dwa są osobnymi bajtami. Czy to ma sens?
Krowy szarlatają

1
@ L3viathan Kiedy zaczynam vim z -u NONE -U NONE, &tabstopocenia na 8. Więc zamieniłem to na 8 fragment z pewnymi modyfikacjami, dzięki :)
Cows quack

13

Mathematica, wynik 13

x~D~x
⌊E⌋
3
⌈Pi⌉
5
6
LucasL@4
8
9
0!+0!+0!+0!+0!+0!+0!+0!+0!+0!
77/7
Tr[{11,1}]
-I*I-I*I-I*I-I*I-I*I-I*I-I*I-I*I-I*I-I*I-I*I-I*I-I*I

Prawdopodobnie powinieneś usunąć zbędne znaki spacji, wygląda na to, że użyłeś tej postaci inaczej.
Ørjan Johansen

1
to nie jest problem. Usunę je.
J42161217,

2
„wszystkie znaki muszą być kodowane za pomocą jednego bajtu w wybranym przez siebie języku” - Obawiam się, że nie ma żadnego kodowania, które koduje te ⌊⌋⌈⌉rzeczy w jednym bajcie każdego ...
user202729

Możemy tego uniknąć ⌊⌋⌈⌉, zamieniając się ⌊E⌋w Floor@GoldenRatio, ⌈Pi⌉w 4, LucasL@4w 7i 77/7w 22/2. Prawdopodobnie można pójść o krok dalej, stosując funkcję z//
Misha Lavrov

12

05AB1E , wynik 18, 67 bajtów

X     Variable is initialized to 1
Y     Variable is initialized to 2
2>     2 + 1
4
5
6
7
8
9
T     Constant 10
3b     3 in binary
•C     Ascii code of 'C'
11Ì     11 in hex
A'ok     Index of 'o' in the alphabet
žz¨¤x+     Middle character of '256' times 2, plus itself
¾<<<<n     Variable initialized to 0, 4 times -1, squared
‘c‘‘c‘QDJH     'c' equals itself (true = 1), duplicated, converted from hex to dec
тD÷·±D*·     Constant 100, divided by itself, * 2, bitwise not, times itself, * 2
"d"aÐÐÐÐÐÐÐÐÐ)O     "d" is_alpha (true = 1), triplicated 9 times, total sum

Wypróbuj online!


13
Twoja odpowiedź to A'ok:)
Okx,

Oto jeszcze trzy: „((Ç;¬= 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;
wyjęta

9

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.

1: 1
2: 2
3: 3
4: 4
5: 5
6: 6
7: 7
8: 8
9: 9
10: A
11: B
12: C
13: D
14: E
15: F
16: G
17: H
18: I
19: J
20: K
21: L
22: M
23: N
24: O
25: P
26: Q
27: R
28: S
29: T
30: U
31: V
32: W
33: X
34: Y
35: Z
36: a
37: b
38: c
39: d
40: e
41: f
42: g
43: h
44: i
45: j
46: k
47: l
48: m
49: n
50: o
51: p
52: q
53: r
54: s
55: t
56: u
57: v
58: w
59: x
60: y
61: z
62: ©
63: ®
64: À
65: Á
66: Â
67: Ã
68: Ä
69: Å
70: Æ
71: Ç
72: È
73: É
74: Ê
75: Ë
76: Ì
77: Í
78: Î
79: Ï
80: Ð
81: Ñ
82: Ò
83: Ó
84: Ô
85: Õ
86: Ö
87: ×
88: Ø
89: Ù
90: Ú
91: Û
92: Ü
93: Ý
94: Þ
95: ß
96: à
97: á
98: â
99: ã
100: ä
101: å
102: æ
103: ç
104: è
105: é
106: ê
107: ë
108: ì
109: í
110: î
111: ï
112: ð
113: ñ
114: ò
115: ó
116: ô
117: õ
118: ö
119: ÷
120: ø
121: ù
122: ú
123: û
124: ü
125: ý
126: þ
127: ÿ

5
Ok, to nie jest nawet uczciwe ...: P
MD XF

wow, to tak, jakby ten język został zrobiony dla tego wyzwania: D
V. Courtois

TIL o innym dziwnym języku :)
roblogic

8

Oktawa, wynik 14, 74 bajtów

Jestem prawie pewien, że jestem teraz blisko limitu.

1:  ~0                        % Not 0 == 1
2:  "H"/"$"                   % "H" = 72, "$" = 36. H/$ = 2
3:  3                         % Literal
4:  4                         % Literal
5:  5                         % Literal
6:  6                         % Literal
7:  7                         % Literal
8:  8                         % Literal
9:  9                         % Literal
10: ceil(pi*pi)               % pi*pi = 9.87. ceil(9.87) = 10
11: 11                        % Literal
12: 2+2+2+2+2+2               % Well, not much to say
13: ['','RT'-'!']             % 'RT' = [82,84]. Subtract '!' (33) to get ['',49,51]=13
14: nnz...                    % Number of non-zero elements in the string...
    nnnnnnnnnnnnnn            % on this line. (This is an awesome trick by the way!)

Musiałem usunąć strchrponieważ mam już cw liczbie 10. Wciąż mam j, ^, =, !, 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ć strchri nnzmożna ją użyć jeszcze raz. Pozostały tylko małe litery abdfgjkmoquvwxy. Z tych funkcji nie można wykonać wielu funkcji. modmoż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 ajest taki sam jak fun('a'), fun a bjest taki sam jak fun('a','b')i tak dalej. Można to wykorzystać w kilku miejscach:

gt t g    % Equivalent to 't'>'g'. Returns 1. Uses space (available)
or o r    % Equivalent to 'o' | 'r'. Returns 1. 

Użycie tego spowoduje 0udostępnienie, ale nie widzę jeszcze, jak uczynić go użytecznym.

e (2.71828...)i jsą nadal nieużywane. Należy usunąć, ceilaby użyć e.

Alternatywy (inspiracja):

1:  ~0             % Not 0 = 1
2:  2              % Numeral
3:  3              % Numeral
4:  fix(i^i^i^i)   % Numeral
5:  5              % Numeral
6:  6              % Numeral
7:  7              % Numeral
8:  8              % Numeral
9:  9              % Numeral 
10: 1+1+1+1+1+1+1+1+1+1   % Well, not much to explain
11: ['','RR'-'!']  % RR are [82,82] in ASCII, subtract 33 (!) to get
                   % [49,49], and concatenate with the empty string to convert [49,49] to 11 
12: nnz nnnnnnnnnnnn   % Number of non-zero elements in the string containing 12 n
13: "4"/4          % "4" = 52. Divide it by 4 to get 13.

7

JavaScript (ES7), 16 liczb całkowitych, 137 130 128 bajtów

Wziąłem odpowiedź @ETHproductions' i pobiegł z nią przez jakiś czas; zmieniło się tak bardzo, że publikuję go osobno. Pomysły są mile widziane. :)

""**""
-~-~{}
3
C=CSS==CSS;C<<C<<C
5
6
7
8
9
++[[]][+[]]+[+[]]
11
4444444444444444444%44
222>>2>>2
`..............i`.indexOf`i`
0XF
atob('MTY')

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

""**""
-~-~{}
3
4
5
6
7
C=CSS==CSS;C<<C<<C<<C
9
++[[]][+[]]+[+[]]
11
`............i`.indexOf`i`
222>>2>>2
0XE
atob('MTU')
88888888888888888%88

Pozostały: $_@#!/^&|?:,ABDFGHIJKLNPQRVWYZcghjklmpqrsuvwyz


1
Zaoszczędź 7 bajtów na 2 dzięki -~{}-~{}: P Ogólnie jednak są całkiem dobre. Na pewno o wiele krótszy niż mój ...
ETHprodukcje

1
I nadal masz wszystko !&/^|do pracy, całkiem imponujące. Jeśli zajdzie taka potrzeba, można użyć !!/!//!!/!/dla 1 do handlu !/na "*.
ETHproductions

@ETHproductions Awesome!
darrylyeo

1
2 to tylko-~-~{}
GOTO 0

10 można zapisać jako +!![]+[+[]], o ile nie ma lepszego zastosowania dla!
GOTO 0

7

Dyalog APL, wynik 15, 89 bajtów

≡''
≢###
3
4
⍴⍬⍬⍬⍬⍬
6
⌈○2
8
9
1E1
⎕D⍳⊂⎕D











l:l
7--7-×7
(~0 0 0 0 0 0 0 0 0 0 0 0 0 0)⊥~0
5+5+5

Nowe linie wcześniej l:lsą częścią 12.

Spacje w 14 oznaczają tabulatory.


1
Myślę, że możesz używać spacji zarówno w 12, jak i 14. Czy APL może zamiast tego używać tabulatorów?
Ørjan Johansen

@ ØrjanJohansen nie ma dodatkowej przestrzeni, ale pomyłkowo uwzględniłem linie oddzielające fragmenty
Uriel

To znaczy, spacja wydaje się być używana w dwóch wpisach, 12 i 14.
Ørjan Johansen

@ ØrjanJohansen oh, tak, ostatni przejdzie z kartami.
Uriel

@Uriel kilka pomysłów: 0 0 0-> 0,0,0; ]fromhex f
ngn

7

> <> , wynik 20, 93 90 74 65 bajtów

(3 bajty zapisane przez Teal Pelican, wiele bajtów zaoszczędzonych przez Jo Kinga!)

iii((
2
3
ll{lll{[
5
6
7
8
!   00=0g
a
b
c
d
e
f
44*
'RA'%
999-9--
"&F#",,
1::+:++:+:+

Wypróbuj je na placu zabaw dla ryb! Możesz sprawić, by fragmenty wydrukowały swoje wyniki, dodającn; 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:

  • W iii((każdy istara się uzyskać wejście, ale ponieważ nie ma w ogóle, będą forsować EOF = -1zamiast. Zatem (jest instrukcja mniej niż, a ponieważ -1jest nie mniej niż -1, popycha falsey 0; ale druga (pyta, czy -1jest mniejsza niż 0, która jest, więc popycha prawdę 1.
  • 2i 3są oczywiste.
  • Bo ll{lll{[pierwszy lprzesuwa długość stosu, a 0następnie drugi przesuwa nową długość, doprowadzając stos do 0, 1. Do {obraca stos lewo, zamiana 1i 0. Kolejne trzy lprzynoszą stos do 1, 0, 2, 3, 4. Następnie {obraca 1przód do przodu i [wysysa pierwszy1 rzecz ze stosu, którą jest 4.
  • 5, 6, 7I8 są zbyt oczywiste.
  • W !\t00=0g(gdzie \toznacza kartę), !pomija kartę, a następnie 00=wypycha dwa zera i sprawdza, czy są równe - są, więc otrzymujemy prawdę 1. Po naciśnięciu innego 0, gznak umieszcza znak w miejscu 1,0kodu, który jest zakładką z kodem znakowym9 .
  • ado fkażdego pchnięcia 10do15 odpowiednio (przypuszczalnie zrobić ładne szesnastkowy).
  • 44*popycha dwa 4si pomnaża je razem, dla16 .
  • 'RA'wypycha na stos kody znaków Ri A(odpowiednio 82 i 65), a następnie %oblicza82 mod 65 = 17 .
  • 999-9-- ocenia na 9 - ((9 - 9) - 9) = 18 .
  • "&F#"popycha kody znakowe &, Fi #, które są 38, 70i 35odpowiednio. Potem ,jest podział, więc rozumiemy 38 / (70 / 35) = 19.
  • Wreszcie, 1::wypycha a 1i duplikuje go dwa razy, +dodaje dwa z nich razem, aby uzyskać 2; :+duplikuje 2i dodaje do siebie, aby uzyskać 4; +dodaje resztki 1do zdobycia 5; następnie :+:+powiela się i dodaje dwa razy, co powoduje 20.

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, loraz cyfry 0–9i a–f), plus tryb ciąg. (Każda inna instrukcja albo nic nie robi pustemu stosowi, ><v^/\|_#x!{}ralbo 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żej 18 + 2 = 20fragmenty.


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", gdzie X, Yi Zsą zastępowane przez znaki z kodami 17, 19i 20odpowiednio.


1
To wspaniale, patrzyłem na ten problem i nie byłem w stanie zrobić nic tak blisko, ale studiowałem twój i byłem w stanie trochę w golfa; 16 można zmienić na; iii ((: i $ -: i $ -: i $ - i- i 1 mają zostać zmienione na; 00 = i zmniejszasz obie linie o kilka bajtów.
Pelikan Teal

@Tealpelican, fajna robota, dziękuję!
Nie drzewo,

1
-23 bajty poprzez zmianę następujących 2> iii((i-16> 2222***17> lll{lllll{{[{n(być może szkicowych, ale jeśli chcesz wyprowadzać jako jedną liczbę, przynajmniej jest jeden mniej l) 18>11+::+:+:++
Jo King

@ JoKing, wow, to wielki golf! (Poszedłem z mniej szkicową wersją 17 - wydawało się, że jest to bardziej zgodne z zasadami.)
Nie drzewo

1
Co powiesz na 17 => ! ll$ggdzie spacja jest zastąpiona znakiem kontrolnym o wartości 17 (Kontrola urządzeń 1)?
Jo King

7

MathGolf , 48 51 53 liczb całkowitych, 324 bajty

î
ª∞~
c±b±+
φⁿ_¥-
5
6
7
○¢i♀/
d²
♂
A
B
C
D
E
☻
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
♥
U
V
W
X
Y
Z
♫¼¼¼¼
88888]Σ
41
╔½½½½½½½½½½½
π░3§3
22#22#
τ╥└
♦⌡⌡⌡⌡⌡⌡⌡⌡⌡
!⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠
'0$
ÿ@@@@£9
))))))))))))))))))))))))))))))))))))))))))))))))))
►◄╠•╠
"hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh"h 
♣(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((

+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ć:
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 *.


Pracowałem nad rozwiązaniem tego problemu, ale utknąłem, próbując zoptymalizować 1-9. Gdy dojdziesz do 10, osiągnięcie trywialne staje się banalne. Kilka rzeczy, które zauważam na pierwszy rzut oka: 88888ΓΣαΣ-> 88888]Σlub 88888§§§§Σ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ż xto, ponieważ masz wtedy, Wxco daje ci 53, o ile możesz uzyskać 35 w inny sposób.
maxb

Dodałem też char/ordoperator, 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.
maxb

@maxb Widziałem twój komentarz, kiedy byłem chory w łóżku, ale teraz mam trochę czasu, aby poprawić tę odpowiedź. Dzięki za 88888]Σ. Nie wiedziałem o tym ]. Co do "hhhhh"h , to nie wydaje się działać . : S
Kevin Cruijssen

1
Nie wiem, czy można go wkleić bezpośrednio stąd, ale kod powinien kończyć się NBSP, niełamliwym znakiem spacji. To polecenie usuwa wszystko poza górą stosu. Jestem całkiem pewien, że PPCG konwertuje postać na zwykłe miejsce w komentarzach. Spróbuj tego
maxb

Jeśli chodzi o tablice, definiuję je rekurencyjnie w MathGolf, [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.
maks.

6

Java 8, 11 12 13, 39 bajtów

Java 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ów

Najwyraźniej znaki są domyślnie rzutowane na liczby całkowite po zastosowaniu operacji

+1 za pomocą @ OlivierGrégoire

i->-~i
2
3
4
5
6
7
8
9
'P'^'Z'
11
"::::::::::::"::length
0xD

Objaśnienia:

i->-~i

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

2
3
4
5
6
7
8
9

dosłowne liczby całkowite

'P'^'Z'

XOR dwóch znaków, aby zwrócić 10

11

dosłowna liczba całkowita

":::::::::::"::length

wyrażenie lambda, które zwraca długość ciągu 12 znaków

0xD

Szesnastkowy 13

TIO Link, jeśli chcesz zweryfikować.


1
Komentarze nie są przeznaczone do rozszerzonej dyskusji; ta rozmowa została przeniesiona do czatu .
Dennis

Aby skrócić liczbę bajtów (-6 znaków), 2można zapisać jako 2i 10jako 'P'^'Z'. Uwalnia to także postacie X+*i używa P.
Olivier Grégoire,


Ta bardziej pozytywna odpowiedź nie zgadza się z tobą.
Olivier Grégoire

Poza tym po raz pierwszy widzę ten „wymóg” od roku na tej stronie internetowej i nikt nigdy nie zgodził się z żadnym z moich golfów, gdy takie lambdy są używane.
Olivier Grégoire

6

Gaia , wynik 25, 203 bajtów

§‼
..⌉+⌉
₵P~~
4
5
6
∂Ql
8
9
¶c
11
'¡ċ⌋u⌋
--⁻-⁻-⁻-⁻-⁻-⁻-⁻-⁻-⁻-⁻-⁻-⁻-⁻-⁻
7:,Σ
Ø!))))))))))))))
øøw<øøw<«øøw<«øøw<«øøw<«
⟩‘
₸ḣ₸K$₸ḣ₸/S₸₸/=$
]]]]]]]]]]]]]]]]]]]n
⇑’e
0(((((((((((((((((((((_
22
“B”“↺↺↺↺↺↺↺↺↺↺↺↺↺↺↺↺↺↺↺↺↺↺↺B”B
3₈×
ℍḥḥ

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 do 0.5, więc tak jest ceil(0.5+ceil(0.5)).

3) ₵P~~

₵Pjest pi, ~jest bitową negacją. Podwójna negacja bitowa to po prostu obcięcie.

4 4

5 5

6. 6

7 ∂Ql

∂Qto lista zawierająca nazwy dni tygodnia, ljest długością.

8 8

9 9

10 ¶c

Punkt kodowy clinefeed .

11 11

12 '¡ċ⌋u⌋

'¡  The string "¡"
ċ   Turn it into a list of code points: [161]
⌋   Minimum: 161
u⌋  Floored square root: 12

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<«

øø    Push two empty lists
w     Wrap one of them
<     [] < [[]]? (it is, so push 1)
øøw<  Do the same thing again to push another 1
«     Bitshift 1 left by 1
      Do that same thing again 3 more times to get 16

17 ⟩‘

Zamknięcie sznurka powoduje, że jest to literał liczbowy base-250. ma wartość bajtu 17 na stronie kodowej Gaia.

18 ₸ḣ₸K$₸ḣ₸/S₸₸/=$

₸     10
ḣ     doubled
₸     10
K     20 choose 10 (184756)
$     Digit list
₸ḣ₸/  20/10 (2)
S     Split the digit list at index 2 ([[1 8][4 7 5 6]])
₸₸/   10/10 (1)
=     Get the first element of that split ([1 8])
$     Join together and print 18

19 ]]]]]]]]]]]]]]]]]]]n

Każdy ]zawija stos na liście. Zrób to 19 razy i uzyskaj głębię nlisty.

20 ⇑’e

Zamknięcie ciągu powoduje, że jest to lista punktów kodowych strony kodowej. ezrzuca 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 jest 23.

24 3₈×

3 × 8.

25 ℍḥḥ

100 o połowę i znowu o połowę.


5

C, wynik 13

To tylko kilka stałych liczb całkowitych.

0==0
__LINE__
3
4
5
6
7
8
9
1+1+1+1+1+1+1+1+1+1
'o'/'.' 
2*2*2*2-2-2
strlen("strlenstrlens")
  1. 0==0ocenia na 1
  2. Zakłada, że ​​kod jest w linii 2. __LINE__= 2
  3. Stała całkowita
  4. Stała całkowita
  5. Stała całkowita
  6. Stała całkowita
  7. Stała całkowita
  8. Stała całkowita
  9. Stała całkowita
  10. 1+1+1...= 1*10= 10
  11. 'o'ma wartość 111, '.'reprezentuje niedrukowalny kod ASCII 0x10. 111/10 = 11
  12. (2<<2)= 8, 8*2= 16, 16-2-2= 12
  13. długość łańcucha "strlenstrlens"= 13

5

Ohm , zdobądź 21 22, 160 bajtów ogółem

╓S@Ri
ΓΓ-Γ-Γ-
αê⌠
¡¡¡¡¼
5
▀lll▀l
ÑÑÑÑÑÑÑÿWÿk
ü`½½
9
..≥°
$$J
3dd
7ƒ
2≡≡≡Σ
║F
4º
0ò~ò~ò~ò~ò~ò~ò~ò~ò~ò~ò~ò~ò~ò~ò~ò~ò~
6DD++
8π
τ╛hτ*
"≤"≤≤≤≤≤≤≤≤≤≤≤≤≤≤≤≤≤≤≤≤≤A
1111 11v11%L1111 11v11%L

Wypró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". lprzyjmuje 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

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

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

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.


5

PowerShell, wynik 12, 91 bajtów. 14, 176 bajtów

[byte]!![byte]                    # type gets cast to bool false, inverted, to int = 1
-   -$?-shl$?                   # -bool true is -1, shift left, negative. (Tab not space)
3
4
5
6
7
8
9
1+1+1+1+1+1+1+1+1+1
22/2                                           # use the 2
'uuuuuuuuuuuu'.LENGTH                          # string length
0xd
@{z=@{};Y=@{};YY=@{};w=@{};v=@{};U=@{};zz=@{};S=@{};r=@{};q=@{};p=@{};J=@{};K=@{};m=@{}}|% COU*             # count items in hashtable (space)

Edytować:

  • Dzięki Ørjan Johansen za zasugerowanie literału szesnastkowego 0xd dla 13 i przestawienie 5, aby zwolnić 1 + 1 + 1 + 1 .. jako opcję.
  • Zmieniono długość tablicy na długość łańcucha, z [int] na [byte] i hashtable, aby użyć hashtable jako wartości, uwalniając (),""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.


0Jeszcze nie korzystałeś , więc 13 może być 0xd. Możesz umieścić 5w normalnym miejscu, zwalniając +do łączenia 1s. 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.
Ørjan Johansen

@ ØrjanJohansen - dobre pomysły, dzięki, zredagowałem z nimi moją odpowiedź
TessellatingHeckler

Znalazłem inny sposób prowadzenia 2: ""-(""-(""-lt(""-""))-(""-lt(""-""))). To pozwala $?na podsumowanie, a potem możesz zrobić to, 1e1co zasugerowałem.
Ørjan Johansen

Zaczekaj, tstarcia z obiema wersjami 1. (""-eq"")-(""-(""-eq""))wydają się lepsze, qw tablicy hashtable można ją łatwo wymienić.
Ørjan Johansen

5

TI-Basic (seria 83), wynik 21 22 23 24 25 (1003 bajtów)

1:  A=A
2:  int(tan(tan(cos(cos(cos(B
3:  tanh⁻¹(√(√(√(√(√(√(√(√(√(√(C!°√(√(C!°
        √(√(√(√(√(√(C!°√(√(√(√(√(√(C!°√(
        C!°√(√(√(C!°√(C!°√(C!°√(√(√(√(√(
        √(C!°√(C!°√(C!°√(C!°
4:  4
5:  cosh(sinh⁻¹(cosh(sinh⁻¹(...sinh⁻¹(cosh(D    with 25 repetitions of cosh(
6:  6
7:  7
8:  8
9:  9
10: ₁₀^(₁₀^(E
11: 11
12: F nPr F/sin(tan⁻¹(...(sin(tan⁻¹(F nPr F     with 143 repetitions of sin(tan⁻¹(
13: det([[G≤G]...[G≤G]]ᵀ[[G≤G]...[G≤G           with 26 repetitions of G≤G
14: ln(tanh(not(H))...tanh(not(H)))
        ln(tanh(not(H)))^⁻not(H                 with 14+1 repetitions of tanh(not(H))
15: iPart(e^(e^(e^(I
16: sum(dim(identity(sum(dim(identity(sum(
        dim(identity(sum(dim(identity(J≥J
17: K nCr K+K nCr K+...+K nCr K                 with 17 repetitions of K nCr K
18: abs(i-i-...-i                               with 20 repetitions of i
19: rand→L:log(LL...LL→M:log(L→N:N⁻¹M           with 19 L's inside the log
20: mean(seq(OOO,O,O,sinh(sinh(cos⁻¹(O
21: ππ³√(π³√(ππ³√(ππ³√(ππ³√(π³√(³√(ππ³√(π³
        √(π³√(ππ³√(π³√(ππ³√(ππ³√(ππ³√(π³√(
        π³√(³√(ππ³√(ππ
22: 22
23: 3(3(3×√(3(3(3×√(3(3×√(3(3(3×√(3×√(3×√(
        3(3×√(3(3×√(3(3(3×√(3(3×√(3×√(3(3(
        3×√(3(3×√(3×√(3×√(3(3(3×√(3(3×√(3(
        3(3×√(3×√(3(3(3×√3
24: Fix 0
    sin⁻¹(ᴇ0
    AnsAnsAnsAnsAnsAnsAns
25: 5*5

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=Ajest wartością logiczną 1, ponieważ zmienna Ajest sobie równa.
  • Bdomyślnie jest 0, tan(tan(cos(cos(cos(Bwynosi 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źmy tanh⁻¹(.
  • 4 jest prosty
  • cosh(sinh⁻¹(X1+X2)
  • 6-9 są proste
  • ₁₀^( jest wbudowany w jeden bajt dla potęg 10, a 10 ^ 10 ^ 0 = 10 ^ 1 = 10.
  • 11 to 11.
  • Innym przykładem lewy stosowanej na 5. F nPr Fjest 1. sin(tan⁻¹(Xupraszcza11+1/X2) i użyte 143 razy, zaczynając od 1 daje nam 1/12. Dzielenie 1 przez tę liczbę wynosi 12.
  • G≤Gwynosi 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 liczby Xw pierwszym logu, pod warunkiem, że Xnie 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≥Jto 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ąc abs( daje 18.
  • rand→Lprzechowuje 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⁻¹(Ijest nieco ponad 4, więc seq(III,I,I,sinh(sinh(cos⁻¹(Ipodaje listę, {0 1 8 27 64}której średnia arytmetyczna wynosi 20.
  • Kolejny przykład sztuczki używanej do zdobycia 3. Tutaj pewna moc πpowinna dać 21; zakodujemy tę potrójną potęgę za pomocą domniemanego mnożenia i ³√(.
  • 22 to 22.
  • Kolejny przykład sztuczki użytej do uzyskania 3 i 21. Kodujemy potęgę 3, która równa się 23 w potrójnym, wykorzystując 3×√(jako pierwiastek kostki i (do mnożenia.
  • Fix 0to ustawienie wyświetlania 0 cyfr po przecinku, zaokrąglając wszystkie wartości do liczb całkowitych. sin⁻¹(ᴇ0ocenia na π / 2, a π / 2 pomnożone przez siebie 7 razy daje około 23,59, co zaokrągla do 24.
  • 5*5to 25. (Bardziej konserwatywne byłoby 5uzyskanie 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).

Xmax wynosi domyślnie 10, to samo z Ymax = 10, Ymin = Xmin = -10 i niektórymi innymi wartościami domyślnymi.
lirtosiast

@lirtosiast Wszystkie to dwa bajty.
Misza Ławrow

Nie jestem pewien co do interpretacji reguł, ale myślę, że nadal możesz użyć jednego z nich bez powtarzania bajtów (uznawanie znaków za bajty zamiast tokenów)
lirtosiast

Jestem nieco sceptycznie nastawiony do tej interpretacji. W każdym razie, licząc znaki jako bajty, musiałoby to być coś w rodzaju Xfact = 4, ponieważ Xmax powoduje konflikt z °. Prawdopodobnie bylibyśmy w stanie wyciągnąć z tego jeden punkt, drugi punkt z komend 2-bajtowych i trzeci punkt z komend tylko dla TI-84.
Misha Lavrov

4

SOGL , wynik 16 18 20, 109 bajtów, 47 użytych znaków

=                    push ""=""
ρ:¾/U                ceil(isPalindrome("")/(isPalindrome("")*(3/4))) -> ceil(1/(3/4)) -> ceil(4/3)
3                    push 3
MM¼÷                 100/(100*1/4)
æ⁄                   length of "aeiou"
6                    push 6
7                    push 7
Nτ                   log2(256)
9                    push 9
L                    push 10
⁹’                   byte with the 11th SOGL code point
Ιζrkk"⁸              `⁸`s UTF-8 codepoint to string, take off 1st 2 chars
'⁰                   messy compression
īuHHHHHHHHHHHHHH±    floor(0.1) `-1` 14 times, then change sign
aIIIIIIIIIIIIIII     A `+1` 15 times, A = 0
4²                   4^2
lllllllllllllllll”l  length of "lllllllllllllllll"
222222222++++++++    2+2+2+2+2+2+2+2+2
δ“○“-                429-420
Μ℮‘                  compressed string of "2ŗ" where ŗ defaults to 0

4

Brachylog , 16 liczb całkowitych, 86 bajtów

1
2
3
4
5
6
7
8
9
ℕ<<<<<<<<<<
≜+₁₁
Ịbkkkkkkkị
Ḥl
ℤ₇×₂ṅ
"____**"pᶜ¹
⟦h>>>>>>>>>>>>>>>>ȧ

Wypróbuj online! (Wejście kontroluje, który program jest uruchamiany, od 1 do N)

Wyjaśnienie

                       The output is...

1                      1
2                      2
3                      3
4                      4
5                      5
6                      6
7                      7
8                      8
9                      9
ℕ<<<<<<<<<<            Strictly bigger than ... strictly bigger than 0
≜+₁₁                   0 + 11
Ịbkkkkkkkị             "12" converted to an integer
Ḥl                     The length of "Hello, World!"
ℤ₇×₂ṅ                  -(-7 × 2)
"____**"pᶜ¹            The number of unique permutations of "____**"
⟦h>>>>>>>>>>>>>>>>ȧ    The absolute value of stricly less than ... stricly less than 0

1
Pomyślałem tylko o Prologu: 1, ponieważ zawsze potrzebujesz kropki na końcu.
false

4

Galaretka , zdobądź 22, 177 bajtów

1: Ṇ  : logical NOT. When there is no input, 0 is assumed, so this returns NOT(0)=1
2: ~A~A  : ~ is bitwise NOT and A is absolute value, implicit 0 input
         : 0~ = -1;   0~A = 1;   0~A~ = -2;  0~A~A = 2.
3: 3  : literal 3
4: -ı-²²×-Ḟ:
   -ı-     : literal complex number -1-1j
   ²²×-    : square (2j), then square(-4), then multiply by (×) negative 1 (-) to get 4+0i
   Ḟ       : get the real component, which is 4
5: 5  : literal 5
6: 6  : literal 6
7: 7  : literal 7
8: 8  : literal 8
9: ØDṪ : tail(Ṫ) of list of digits (ØD) to return 9
10: ⁵  : literal 10
11: 11 : literal 11
12: CNCNCNCNCNCNCNCNCNCNCNC : again, 0 is taken as input because there is no input
                            : C is complement and N is negate
                            : so each NC returns 1-(-n)=n+1 and is equivalent to increment, returning 12
13: “>>>>>»L    : encodes "#GlomAbducens" with “>>>>>» then returns the length in characters (13) with L
14: ‘‘‘‘‘‘‘‘‘‘‘‘‘‘   : default input is 0 again, and each ‘ increments it to get 14
15: Ị;Ị;Ị;Ị;Ị;Ị;Ị;Ị;Ị;Ị;Ị;Ị;Ị;Ị;ỊS : default input is 0 again.
                                   : each Ị returns abs(0)<1 = 1
                                   : these are concatenated together with ; then summed with S to get 15
16: ⁴  : builtin literal 16
17: ,,,,,,,,,,,,,,,,,ŒḂŒḊ : Each , is the pair dyad: x,y = [x,y] and x,[y,z] = [x,[y,z]]. 
                          : Thus each , increased the depth by 1, then ŒḊ returns the depth: 17
18: 9Ḥ : 9 doubled = 18
19: E+E+E+E+E+E+E+E+E+E+E+E+E+E+E+E+E+E+E : each E returns areallelementsidentical([0]) = 1
                                          : 19 of these are summed with +
20: 44440b44ạ/ : 44440 base 44 = [22,42,0].
               : ạ/ takes the absolute difference of terms: ||22-42|-0| = 20
21: ”TOHH : ”T is the character literal "T". OHH returns its ascii value 84 (O) halved twice (HH) = 21
22: literal 22

Wypróbuj wszystkie na raz lub Wypróbuj pojedynczo (argumentem jest, które wyjście chcesz).

Niewykorzystane znaki:

¡¢£¤¥¦©¬®µ½¿€ÆÇÐÑÞßæçðȷñ÷øœþ !"#$%&'()*.:<=?@BFGIJKMPQRUVWXYZ[\]^_`acdefghijklmnopqrstuvwxyz{|}¶°¹³⁶⁷⁸⁹⁺⁻⁼⁽⁾ƁƇƊƑƓƘⱮƝƤƬƲȤɓƈɗƒɠɦƙɱɲƥʠɼʂƭʋȥẠḄḌẸḲḶṂỌṚṢṬỤṾẈỴẒȦĊĖḞĠḢİĿṀṄȮṖṘṠẆẊẎŻḅḍẹḥịḳḷṃṇọṛṣṭụṿẉỵẓȧḃċḋėḟġḣŀṁṅȯṗṙṡṫẇẋẏż«’

Używasz Adla 2 i 4 , nie?
Dennis

@Dennis Mój link do TIO był poprawny, ale moje wyjaśnienie było inne. Naprawiono
fireflame241

1
Widzę. Przy okazji, jeśli umieścisz 22¹£€Ygłówny link, możesz wykonać wszystkie fragmenty naraz. tio.run/##y0rNyan8///hzjauOsc6Ry5jLt0jG3UPbTq0icuUy4zLnMuC6/…
Dennis

4

Reng, wynik 40, 149 bajtów

Wypróbuj tutaj!

1.  e
2.  2
3.  ::l
4.  4
5.  5
6.  i`i`i`i`i`i`+++++
7.  7
8.  8
9.  9
10. A
11. ÇÇÇǹ
12. C
13* [[[[[[[[[[[[[mn~
14. E
15. F
16. G
17. H
18. I
19. J
20. K
21. L
22. M
23. N
24. O
25. P
26. Q
27. R
28. S
29. T
30. U
31. V
32. W
33. X
34. Y
35. Z
36. 6²
37. "%"
38* &fæ¦
39. D3*
40. 11±$1±±±±±±±±$11±$1±±±±$±$

Wszystkie wielkie litery są cyframi, więc to miłe. Wszystkie oprócz dwóch są fragmentami. Dwa, które są programami:

13. [[[[[[[[[[[[[mn~
38. &fæ¦

Podany link pozwala zobaczyć stos podczas działania. Wyjaśnię później.


4

CJam, wynik 27, 168 bajtów

1-3: X , Y,Z

Zmienne X, YorazZ 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 Ujest inicjowana na 0. Naciśnij Ui 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=popycha 1. Ten kod jest równoważny z 1 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-

Nwypycha ciąg zawierający znak nowej linii. :ikonwertuje go na listę kodów znaków, dając [10]. ~rozpakowuje to, dając 10. 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(dla m[) i isą już zajęte.

  • W zakresie manipulacji tablicami mogę:

    • Użyj mapy za pomocą %lubf
    • Użyj fold z *
    • Wykonaj niektóre ustawione operacje
    • Konwersja bazy (wydaje się to obiecujące, ale nie wiem, jak uzyskać numer bazowy)
    • Twórz tablice za pomocą |:M1|2|3|

Tylko uwaga, możesz mieć 21 be U)))))))))))))))))))))i 22 be, 22które byłyby darmowe 1dla późniejszego fragmentu.
Business Cat

@BusinessCat Thanks, edytowane.
Esolanging Fruit

Aby przekonwertować liczbę pi na liczbę całkowitą, możesz skorzystać z faktu, że konwersja podstawowa ma domyślny wpływ :ina listę cyfr (np. [P]1bDaje 3).
Martin Ender

Jeśli nie przeszkadza ci co 23 a dużo dłużej można użyć ''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.
Martin Ender

@MartinEnder Zrobię to, jeśli zobaczę zastosowanie ;, ale w tej chwili nie mogę.
Esolanging Fruit

4

Haskell , wynik 13, 86 bajtów

pi/pi
sum[sum[]^sum[],sum[]^sum[]]
3
4
5
6
7
8
9
length"eeeeeeeeee"
11
2+2+2+2+2+2
0xD

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/pijest 1.0.
sum[]ocenia do 0, 0^0do 1i sum[1,1]do 2. 3po 9prostu się rozszyfrować.
length"eeeeeeeeee"zwraca długość łańcucha, który wynosi 10.
2+2+2+2+2+2jest12 .
0xDjest szesnastkowy dla 13.


Twoje litery się nakładają.
xnor

@xnor Dzięki za wskazanie. Powinien zostać teraz naprawiony.
Laikoni
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.