2016 Time Capsule String: Tamsayılı Merdiveni tırman


28

2016 zaman kapsülü dizesindeki 74 karakteri kullanma

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

N kodu parçacıklarını aynı dilde yazın:

  • 1. pasaj çıktılar 1.
  • 2. pasaj çıktılar 2.
  • 3. pasaj çıktılar 3.
  • ... vb. ...
  • N'inci pasajı çıktılar N(sayı, değişmez harf değil).

Bir "kod pasajı" bunlardan biri olarak tanımlanır:

  • Normalde sayıyı veren herhangi bir giriş gerekmeyen tam program .
  • Sayıyı normal olarak veren / veren hiçbir argüman olmayan bir işlev .
  • Sayıyı değerlendiren bir REPL ifadesi.

(Bu üç değişkeni N parçacıklarınızda karıştırabilir ve eşleştirebilirsiniz.)

Birleştirilmiş N parçacıkları kümesinde kullanmanıza izin verilen karakterler tam olarak zaman kapsülünün 74 karakteri ve ayrıca floor(N/2) her yerde kullanabileceğiniz ilave "joker" baytlardır .

Örneğin, zaman kapsülü üç tane içerdiği @için, N parçacıklarınızın tamamında, joker karakter baytlarınızın @bazılarını floor(N/2)ek olarak kullanmaya karar vermediğiniz sürece , sadece üçe kadar mevcut olabilir @.

Bu nedenle, joker karakterleri saymamakla birlikte, N snippet'lerinizdeki birleştirilmiş karakter kümesi, 74 zaman kapsülü karakterinin bir alt kümesi olmalıdır. Birleştirilmiş uzunlukları 74'ü aşamaz. Parçacıklar arasındaki zaman kapsülü karakterlerini veya joker baytları tekrar kullanamazsınız.

notlar

  • Snippet uzunluğu için başka bir sınır yoktur veya snippet başına kaç joker karakter kullanılabilir.

  • Tüm snippet'leri 1 - N için yazmalısınız. 0 - N-1 değil, k - N + k - 1 değil.

  • Parçacıklar bireysel olmalı, listeyi çıkaran bir pasaj değil 1, 2, 3, ..., N.

  • Çıktılar bunun gibi bir 3.0yerde yüzen olabilir 3ve dilinizin doğal temeliyse , ondalık basamaktan başka bir taban kullanabilirsiniz . Tüm pasajlar için aynı tabanı kullanmanız gerekir.

  • Joker karakterler, dilinizin kodlamasında bayt olarak sayılır . Bu muhtemelen ASCII olacaktır ancak örneğin kodlamada bir bayt sayılıyorsa, onu tek bir joker bayt olarak kullanabilirsiniz.

  • Çok baytlı karakterler için joker bayt kullanabilirsiniz. örneğin , normalde üç bayttır, bu yüzden bir snippet'te kullanabilirsiniz, ancak floor(N/2)joker baytlarınızın üçüne mal olur.

  • Yeni satır gibi \r\nbir bayt olarak kabul edilebilir.

Örnek

Python'da N = 4 sadece REPL kullanılarak mümkündür. Orada floor(4/2) = 2joker.

  1. 1zaman kapsülü gelen evrim bir ifadedir 1.

  2. 2yani tek bir joker karakterden oluşur 2. İçin değerlendirir 2.

  3. 3ayrıca tek bir joker karakterden oluşur. İçin değerlendirir 3. Artık joker karakter yok.

  4. 4neyse ki zaman kapsülü içinde ve o evals 4.

Bu snippet'ler kısa ve önemsizdir. Gerçek bir cevap muhtemelen daha karmaşık olacaktır.

(Python'daki beş yaş ve üstü kesinlikle mümkün olabilir, ancak bunu profesyonellere bırakacağım.)

puanlama

En yüksek N olan cevap kazanır; yani tamsayı merdivenini en yükseğe çıkaran kişi.

Beraberlik durumunda, en az joker karakter baytını kullanan cevap kazanır.
Hala bir kravat varsa, en az kümülatif karakteri kullanan cevap kazanır.
Yoksa hala bir kravat, önceki cevap kazanır.


1
Bir programlama dili REPL içermiyorsa, uygun değere göre değerlendirilirse, o dilde bir ifade gönderebilir miyiz? (Örneğin, 4Perl’in

1
Oh, ve başka bir soru: ASCII uyumlu olmayan kodlamaya sahip bir dilde, zaman kapsülü karakterlerini karakter (onları dilin kodlamasına çevirerek) veya bayt olarak (programı ASCII olarak görüntüleyen bir program yazarak ) mı ele alıyoruz? tamamen zaman kapsülü karakterleri içerecek gibi görünüyor?) Garip karakter kümelerine sahip bazı dillerde, zaman kapsülü karakterlerinin çoğu karakter kümesinde bile değildir, bu da onları olduğu gibi kullanmasını zorlaştırır.

1
Peki ya sıfırlar? 07 Aynı mı 7?
Emigna

1
Gerçekten dize ne içerdiğini beni dinletiyor -ne de n...
devRicher

1
Yığın tabanlı dillerde "pasajlar", değerlerini yığında bırakabilir mi?
FlipTack

Yanıtlar:


10

CJam , 25 snippet, 12 joker karakter, 64 bayt

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

Çevrimiçi deneyin!

yabankartları:

568BBCDEFGJK

Dennis'in beni affetmesinden önce çabucak göndermem gerektiğini hissediyorum.


Hangi jokerleri kullandınız?
Rɪᴋᴇʀ

@EasterlyIrk Düzenleme. Joker karakter sayacını Dennis'in cevabında da kullanabilirsiniz .
jimmy23013



5

JavaScript, 10 sayılar, 5 joker karakterler

Kalan karakterler: !!#$$%&())))*...:=@@@HILOQQQTTZ\^```eefmpy{|||~~~~~~~~~

5/5 kullanılan bonus karakterleri: 37680

Programlar:

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

Kullanabileceğim dizelerden \xABbirinin bir sayı olacağını umuyordum , fakat ne yazık ki denediğim kombinasyonlardan hiçbiri sonuç vermedi. ^(XOR) karakteri de kullanmak ilginç olurdu, ama şu anda büyük yeterince sayıda yapmak için kullanılabilecek herhangi bir fırsat görmüyorum.

Başka bir uygulanabilir kombinasyon görürseniz, yorumlarda bana bildirin.

Düzenleme: Arnauld sayesinde 10 numara eklendi


1
Sanırım ekleyebilirsin 10. 0xA( 010'a ulaşmak için verilen yeni bir joker karakteri ile)
Arnauld

Bir yere (Q=!``)|Qekstra almak için 1 için yapabilirsiniz 1. Ancak bunun yardımı olacak mı emin değilim
ETHproductions

4

Pyth, 12 snippet, 20 bayt (6 joker karakter)

f@

Kök (n, n) 'nin truthy olduğu ilk sayıyı bulun, 1'den başlar. Çıktı: 1

y!H

Çifte değil {}. Çıktı: 2

3

Joker karakter # 1. Çıktı: 3

4

Çıktı: 4.

5

Joker karakter # 2. Çıktı: 5

6

Joker karakter # 3. Çıktı: 6

7

Joker # 4. Çıktı: 7

8

Joker Karakter # 5. Çıktı: 8

9

Çıktı: 9

T

Önceden başlatılmış değişken. Çıktı: 10

+T!Z

On artı sıfır değil. Çıktı: 11

12

Joker karakter # 6 ( 2). Çıkış: 12


4

Oktav, 6 sayı, 3 joker karakter

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

Hala var 1, 9ve *sol, ama o beni çok yardımcı olacaktır eğer bilmiyorum. Onlarla neler yapabileceğime bakacağım :)

Bir Esolang kullanmıyorken pek çok numara almak kolay değil. Bir veya iki tane daha alabileceğimi umuyorum, ancak bunun zor olacağını düşünüyorum.


2

Pushy , 10 sayı (4 joker karakter)

Bunların hepsi sonucu yığında bırakan pasajlar. Bunu her bir snippet'e ekleyerek çevrimiçi yorumlayıcıda test edebilirsiniz #(numarayı yazdırmak için)

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

Bu cevap henüz tamamlanmadı - her ne kadar muhtemel gözükmese de çok daha ileriye gideceğim.


1

05AB1E, 12 sayılar, 6 joker karakterler

 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

Altıgen , 6 sayı, 3 joker karakter, 23 bayt

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

Çevrimiçi deneyin!

Altıncı programın tamamı joker karakterlerden yapılmıştır.

Gerçekten ilginç olan tek şey 3. Bunu yapabildiğim halde 4(!@, bu beni kolayca 4oluşturmam için bırakmayacaktı 5, ben de bununla gittim:

 ) |
\ @ $
 ! .

Nedeniyle |, )IP sağ köşesine sarar önce ilk satırda iki kez çalıştırılır. $atlar @ve ardından \IP'yi )üçüncü kez yönlendirir . IP sol alt köşeye !kaydırılır,3 ve@ kaydırılır, programı sonlandırır.

6'dan fazla snippet'in mümkün olduğunu sanmıyorum, çünkü !!!!!programı sonlandırmak için kullanılabilecek yalnızca 5 baskı komutu ( ) ve 5 komutu vardır ( @@@%:). Beşinci pasajdan sonra, pasaj başına en az iki joker karaktere ihtiyacımız var. Dolayısıyla, 6bunun için bir joker karakter kullanmadan kalmayı başarsam bile, yedinci snippet'e gitmek için yeterli joker karakter kalmayacaktı.


1

JavaScript, 8 sayılar, 4 joker karakterler

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

Daha sonra tekrar deneyebilirim - 2 ve 6'da karakterleri boşa harcıyorsanız biraz harcıyorum.


0

Befunge-98, 4 snippet, 18 bayt, 2 joker karakter

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

Kalan karakterler: !!!$$%&())))*=ILOQQQTTZ\^`````````eefmpxy{||||~~~~~~~~~

Her ekstra program bir tür çıktı gerektireceğinden ve hepsi .,zaten tükendiğinden, daha fazla şey olduğundan şüpheliyim . Joker olmadan 3 ve 5 yapmanın bir yolunu bulabilirsem, o zaman mümkün.

Son program istifin dolması nedeniyle sona erecektir. Ave Hhiçbir parmak izi yüklenmediğinde, yansıtacak ve program 9'ları zorlamaya devam edecektir.


Sonuncunun geçerli olduğunu sanmıyorum. Zorluk aksi belirtilmedikçe, programların sonlandırılması gerekir.
Martin Ender

%Yine de basitçe sonlandırabilirsiniz .
Martin Ender

@MartinEnder 00%Befunge-98'de geçerlidir ve 0 sonuçlanır (veya kullanıcıdan Befunge-
93'deki

@MartinEnder Ayrıca, son program olacak sonunda sonlu bellek varsayarak sonlandırabilir. Funge-98'in belleği tükenirse {geri dönebileceğini belirtir ; normal itme hakkında hiçbir şey söylenmez ve tüm tercümanlar OOM'da başarısız görünüyor, ancak açıkça dil sınırları içinde bellek sınırları düşünülüyor.
PurkkaKoodari

Bunun pkarakterin varlığından ötürü potansiyel olarak geliştirilebileceğini (belki de ???) düşünüyorum , ancak biraz çalışacağız. e%95 almak için yapabilirsin , ama hem yazdırıp hem de programı sonlandırmak için bir yola ihtiyacın olacak, bu yüzden şüpheliyim
MildlyMilquetoast

0

SmileBASIC, 12 snippet, 5 joker karakter, 31 bayt

!.     '. 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)

Bunun yerine bir değişken de kullanabilirdim .(değişkenler 0'dan başlar) ve bir dize değişkeni (like Q$) yerine kullanabilirdim@Q

Kullanılan karakterler: !!!#&*+...1449@AHILQQTem||

Kullanılan joker karakterler: 67813

kullanılmayan karakterler: !!$$%()))):=@@OQTZ\\^`````````efpxy{||~~~~~~~~~

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.