Time Capsule String 2016: Climb The Integer Ladder


28

Używanie 74 znaków z ciągu kapsuły czasu 2016

H@~*^)$.`~+1A|Q)p~`\Z!IQ~e:O.~@``#|9@)Tf\eT`=(!``|`~!y!`) Q~$x.4|m4~~&!L{%

napisz fragmenty kodu N wszystkie w tym samym języku, w którym:

  • Wyjścia pierwszego fragmentu kodu 1.
  • Wyjścia drugiego fragmentu kodu 2.
  • Wyjścia trzeciego fragmentu kodu 3.
  • ... itd. ...
  • Wyjście N-tego fragmentu kodu N(liczba, a nie litera).

„Fragment kodu” jest zdefiniowany jako dowolny z poniższych:

  • Pełny program bez wymaganego wejścia, który normalnie wypisuje liczbę .
  • Funkcja bez wymaganych argumentów, która normalnie wypisuje / zwraca liczbę .
  • REPL wyrażenie zwracające liczbę.

(Możesz mieszać i dopasowywać te trzy warianty w swoich fragmentach N).

Znaki, których możesz używać w połączonym zestawie fragmentów N, to dokładnie 74 znaki kapsuły czasu oraz floor(N/2) dodatkowe „bajtowe” znaki , których możesz używać w dowolnym miejscu.

Na przykład, kapsuła czasu zawiera trzy @, więc w całych twoich N fragmentach może być tylko trzy @, chyba że zdecydujesz się użyć niektórych z floor(N/2)symboli wieloznacznych jako dodatkowych @.

Tak więc, nie licząc symboli wieloznacznych, połączony zestaw znaków w twoich N fragmentach musi być podzbiorem 74 znaków kapsuły czasu. Ich łączna długość nie może przekraczać 74. Nie można ponownie używać znaków kapsułki czasu ani symboli wieloznacznych między fragmentami.

Notatki

  • Nie ma żadnych innych ograniczeń dotyczących długości fragmentu ani liczby symboli zastępczych, które mogą być użyte na jeden fragment.

  • Musisz napisać wszystkie fragmenty kodu od 1 do N. To nie jest 0 do N-1, ani k do N + k-1.

  • Fragmenty muszą być indywidualne, a nie jeden, który wyświetla listę 1, 2, 3, ..., N.

  • Dane wyjściowe mogą być zmiennoprzecinkowe jak 3.0na miejscu 3i możesz użyć podstawy innej niż dziesiętna, jeśli jest to naturalna podstawa twojego języka . Musisz użyć tej samej bazy dla wszystkich urywków.

  • Symbole wieloznaczne są liczone jako bajty w kodowaniu Twojego języka . Prawdopodobnie będzie to ASCII, ale np. Jeśli liczy się jako jeden bajt w twoim kodowaniu, możesz go użyć jako pojedynczego bajtu wieloznacznego.

  • Możesz używać symboli wieloznacznych dla znaków wielobajtowych. np. zwykle ma trzy bajty, więc możesz użyć go we fragmencie, ale będzie to kosztować trzy bajty z symbolami wieloznacznymi.floor(N/2)

  • Nowe linie, takie jak \r\nmogą być uważane za jeden bajt.

Przykład

W Pythonie N = 4 jest możliwe tylko przy użyciu REPL. Istnieją floor(4/2) = 2symbole wieloznaczne.

  1. 1z kapsuły czasu to wyrażenie, które ewaluuje do 1.

  2. 2składa się z jednego znaku wieloznacznego, a mianowicie 2. Evals to 2.

  3. 3składa się również z jednego znaku wieloznacznego. Evals to 3. Nigdy więcej symboli wieloznacznych.

  4. 4jest na szczęście w kapsule czasu i ewaluuje 4.

Te fragmenty są krótkie i trywialne. Prawdziwa odpowiedź byłaby prawdopodobnie znacznie bardziej złożona.

(Pięć i więcej w Pythonie może z pewnością być możliwe, ale zostawię to profesjonalistom.)

Punktacja

Odpowiedź z najwyższymi N wygrywa; tzn. ten, który wspina się po drabinie liczb całkowitych najwyższy.

W przypadku remisu wygrywa odpowiedź wykorzystująca najmniej bajtów symboli zastępczych.
W przypadku remisu wygrywa odpowiedź, w której użyto najmniej skumulowanych znaków.
Jeśli nadal jest remis, wygrywa wcześniejsza odpowiedź.


1
Jeśli język programowania nie ma REPL, czy nadal możemy przesłać wyrażenie w tym języku, jeśli będzie miało odpowiednią wartość? (Na przykład, czy 4prawidłowy fragment zwraca 4, w starszych wersjach Perla, które nie mają REPL?)

1
Aha, i inne pytanie: w języku z niekompatybilnym kodowaniem ASCII, traktujemy znaki kapsuły czasowej jako znaki (tłumacząc je na kodowanie języka), lub jako bajty (pisanie programu, który przegląda program jako ASCII wydaje się zawierać w całości postacie z kapsuły czasu)? W niektórych językach z dziwnymi zestawami znaków większość znaków kapsuły czasu nie ma nawet w zestawie znaków, co utrudnia korzystanie z nich w obecnej postaci.

1
Co z wiodącymi zerami? Czy to 07 to samo co 7?
Emigna

1
Naprawdę mnie denerwuje, że ciąg nie zawiera ani -ani n...
devRicher

1
Czy „fragmenty” w językach opartych na stosie mogą pozostawić swoje wartości na stosie?
FlipTack,

Odpowiedzi:


10

CJam , 25 fragmentów, 12 symboli wieloznacznych, 64 bajty

1
Q!)
Z
4
5
6
L``(*$)#
8
9
T!T
B
C
D
E
F
G
H
I
J
K
O`e`~~!!
B`:)
Q``$e`~~@~@=~+
Q!)4
Amf

Wypróbuj online!

Symbole wieloznaczne:

568BBCDEFGJK

Czuję, że muszę szybko pisać, zanim Dennis mnie obezwładni.


Z jakich symboli wieloznacznych korzystałeś?
Rɪᴋᴇʀ

@EasterlyIrk Edit. Możesz także użyć licznika wieloznacznego w odpowiedzi Dennisa .
jimmy23013



5

JavaScript, 10 liczb, 5 symboli wieloznacznych

Pozostałe postacie: !!#$$%&())))*...:=@@@HILOQQQTTZ\^```eefmpy{|||~~~~~~~~~

Wykorzystano 5/5 dodatkowych znaków: 37680

Programy:

  1. 1
  2. ! `` +! ``
  3. 3
  4. 4
  5. 4|!``
  6. 6
  7. 7
  8. 8
  9. 9
  10. 0xA

Miałem nadzieję, że jeden z ciągów, który mógłbym użyć, \xABbędzie liczbą, ale niestety żadna z kombinacji, które wypróbowałem, nie przyniosłaby żadnej. ^Charakter (XOR) będzie również interesujące w użyciu, ale w tej chwili nie widzę żadnych możliwości, gdzie może być wykorzystywane do wytwarzania dużej liczby mało.

Jeśli zobaczysz inną wykonalną kombinację, daj mi znać w komentarzach.

Edycja: Dodano # 10 dzięki Arnauldowi


1
Myślę, że możesz dodać 10. 0xA(z 0przyznaniem nowej wieloznacznej karty za osiągnięcie 10)
Arnauld

Możesz zrobić (Q=!``)|Qdla 1, aby dostać 1gdzieś dodatkową . Nie jestem jednak pewien, czy to pomoże
ETHproductions

4

Pyth, 12 fragmentów, 20 bajtów (6 symboli wieloznacznych)

f@

Znajdź pierwszą liczbę, w której root (n, n) jest prawdziwy, zaczynając od 1. Wyjście: 1

y!H

Nie podwójnie {}. Wyjście: 2

3

Symbol wieloznaczny nr 1. Wyjście: 3

4

Wyjście: 4.

5

Symbol wieloznaczny # 2. Wyjście: 5

6

Symbol wieloznaczny # 3. Wyjście: 6

7

Symbol wieloznaczny # 4. Wyjście: 7

8

Symbol wieloznaczny # 5. Wyjście: 8

9

Wyjście: 9

T

Zmienna zinicjalizowana. Wyjście: 10

+T!Z

Dziesięć plus nie zero. Wyjście: 11

12

Symbol wieloznaczny # 6 ( 2). Wyjście: 12


4

Oktawa, 6 liczb, 3 symbole wieloznaczne

1: ~~I          % not(not(sqrt(-1))) evaluates to true (or 1)
2: 2            % Wildcard
3: 3            % Wildcard
4: 4
5: (T=4)+~~T    % Create a variable T=4, then add not(not(T)) which evaluates to 1.
6: 6            % Wildcard

I jeszcze 1, 9i *lewo, ale nie wiem, czy to pomoże mi dużo. Zobaczę, co mogę z nimi zrobić :)

Niełatwo zdobyć wiele liczb, gdy nie używasz Esolanga. Mam nadzieję, że uda mi się zdobyć jeszcze jedną lub dwie, ale myślę, że będzie ciężko.


2

Pushy , 10 liczb (4 symbole wieloznaczne)

Wszystkie są fragmentami, które pozostawiają wynik na stosie. Możesz to sprawdzić w tłumaczu online , dołączając #do każdego fragmentu kodu (aby wydrukować numer)

A(      \ 1:  Get alphabet and check that 'Z' >= 'Y'. Results in 1 (True)
x&+     \ 2:  Check stack equality (True - both are empty) then duplicate and sum.
3       \ 3:  Push 3 (1 wildcard)
4       \ 4:  Push 4
1 4+    \ 5:  1 + 4 in postfix, leaves 5 on the stack (1 wildcard)
`L`T%   \ 6:  Get character code of 'L' and modulo by T (ten) - leaves 6 on the stack
7       \ 7:  Push 7 (1 wildcard)
8       \ 8:  Push 8 (1 wildcard)
9       \ 9:  Push 9
T       \ 10: Push 10

Ta odpowiedź nie jest jeszcze kompletna - choć wydaje się mało prawdopodobne, że posunę się znacznie dalej.


1

05AB1E, 12 liczb, 6 symboli wieloznacznych

 1:    1                                   -> 1
 2:    )O!x                                -> sum([])!*2
 3:    4L`\                                -> 2nd_last(range(1...4))
 4:    4                                   -> 4
 5:    5        # wildcard 1 = 5           -> 5
 6:    6        # wildcard 2 = 6           -> 6
 7:    Tf`~                                -> or(last2(prime_factors(10)))
 8:    8        # wildcard 3 = 8           -> 8
 9:    9                                   -> 9
10:    T                                   -> 10
11:    A`Q!T+   # wildcard 4 = T           -> (y==z)!+10
12:    TÌ       # wildcard 5,6 = T,Ì       -> 10+2

1

Sześciokąty , 6 liczb, 3 symbole wieloznaczne, 23 bajty

1!@
))!@
)|\@$!
4!%
4)!:
6!@

Wypróbuj online!

Cały szósty program składa się z symboli wieloznacznych.

Jedyny naprawdę interesujący to 3. Chociaż mógłbym to zrobić jako 4(!@, to pozostawiłoby mnie bez 4generowania 5łatwo, więc wybrałem to:

 ) |
\ @ $
 ! .

Ze względu na to |, że )pierwsza linia jest uruchamiana dwa razy, zanim IP zawinie się w prawym rogu. $pomija @, a następnie \przekierowuje adres IP po )raz trzeci. Adres IP zawija się w lewym dolnym rogu, !drukuje 3i @kończy działanie programu.

Nie sądzę, aby możliwe było więcej niż 6 urywków, ponieważ istnieje tylko 5 poleceń drukowania ( !!!!!) i 5 poleceń, których można użyć do zakończenia programu ( @@@%:). Tak więc po piątym fragmencie potrzebujemy co najmniej dwóch symboli wieloznacznych na fragment. Dlatego nawet jeśli udało mi się uzyskać 6bez użycia symbolu wieloznacznego, nie byłoby wystarczającej liczby symboli wieloznacznych, aby przejść do fragmentu siódmego.


1

JavaScript, 8 liczb, 4 symbole wieloznaczne

 1: 1
 2: -~!``
 3: 4+~!$
 4: ~!``*~!``
 5: 4|!$
 6: 0xf^9
 7: 7
 8: 8

Może spróbuję ponownie później - Tracę trochę postaci na 2 i 6, kiedy do tego dojdziesz.


0

Befunge-98, 4 fragmenty, 18 bajtów, 2 symbole wieloznaczne

!.@
!:+.@
41-.@    wildcard 1 = -
4.#A9H   wildcard 2 = .

Pozostałe znaki: !!!$$%&())))*=ILOQQQTTZ\^`````````eefmpxy{||||~~~~~~~~~

Wątpię, czy więcej jest możliwych, ponieważ każdy dodatkowy program będzie wymagał postaci wyjściowej, a wszystkie .,są już zużyte. Jeśli mogę wymyślić sposób na wykonanie 3 i 5 bez znaku wieloznacznego, to jest to możliwe.

Ostatni program ostatecznie zakończy się z powodu zapełnienia stosu. Ai Hbez załadowanych odcisków palców odbije się, a program będzie naciskał cyfry 9.


Nie sądzę, żeby ostatni był ważny. O ile wyzwanie nie stanowi inaczej, programy muszą zostać zakończone.
Martin Ender

Możesz jednak po prostu zakończyć %.
Martin Ender

@MartinEnder 00%jest ważny w Befunge-98 i daje wynik 0 (lub prosi użytkownika o wynik w Befunge-93.
PurkkaKoodari

@MartinEnder Również ostatni program będzie ostatecznie zakończyć zakładając skończoną pamięć. Specyfikacja Funge-98 wspomina, że {może się odwrócić, jeśli zabraknie pamięci; nic nie mówi się o normalnym wypychaniu, a wszyscy tłumacze wydają się zawieść w OOM, ale wyraźnie ograniczenia pamięci są rozważane w specyfikacji języka.
PurkkaKoodari

Myślę, że można to potencjalnie poprawić (może ???) ze względu na obecność ppostaci, ale zajęłoby to trochę pracy. Możesz zrobić, e%9aby uzyskać 5, ale potrzebujesz sposobu, aby zarówno wydrukować, jak i zakończyć program, więc wątpię
MildlyMilquetoast

0

SmileBASIC, 12 fragmentów, 5 symboli wieloznacznych, 31 bajtów

!.     '. is parsed as the number 0.0; taking the logical not gives 1
!.+!.  'Previous value added to itself
@Q||Q  '@Q is a label string and Q is a variable. For some reason, certain comparison/logical operations between strings and numbers return 3 rather than 1 or 0. 
4      '4
#TLIme 'Constant for the text color lime green, value is 5.
6      '6 (wildcard)
7      '7 (wildcard)
8      '8 (wildcard)
9      '9
&HA    'Hexadecimal A
11     '11 (one of them is a wildcard)
4*3    '4 multiplied by 3 (3 is wildcard)

Mógłbym również użyć zmiennej zamiast .(zmienne zaczynają się od 0) i zmiennej łańcuchowej (jak Q$) zamiast@Q

Użyte znaki: !!!#&*+...1449@AHILQQTem||

Używane symbole wieloznaczne: 67813

nieużywane znaki: !!$$%()))):=@@OQTZ\\^`````````efpxy{||~~~~~~~~~

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.