İkili zaman ikili değil


36

Bu zorluğa dayanarak .

Ritim oyununda osu! Zorluk değiştirici "Double-time" aslında hızı sadece% 50 arttırıyor.

Göreviniz, pozitif çıktılar bir program yazmaktır bile tamsayı (0'dan daha yüksek), ve kaynak kodu her bayt / karakter (tercih) yinelenmiş, bunun çıkış sayısı 1.5 ile çarpılır olmalıdır.

Örneğin, kaynak kodunuz ABC6 ise ve çıktı 6 ise, AABBCC9 çıktı olmalıdır.

Orijinal meydan okuma kurallarına uyarak:

kurallar

  • Tam bir program oluşturmalısınız.
  • İlk kaynak en az 1 bayt uzunluğunda olmalıdır.
  • Her iki tam sayı da 10. basamakta yer almalıdır (bunları başka bir yerde veya bilimsel gösterime sokmak yasaktır).
  • Programınız giriş yapmamalı (veya kullanılmamış, boş bir giriş yapmalı) ve herhangi bir hata yapmamalıdır (derleyici uyarıları hata olarak kabul edilmez).
  • Tam sayıların sondaki / baştaki boşluklarla çıkmasına izin verilir.
  • Kaynağınızın kopyaları arasında yeni bir satır alamazsınız.
  • Bu , yani her dilde en az bayt kazanıyor!
  • Varsayılan Loopholes uygulanır.

Bunun orijinal mücadeleden çok daha az önemsiz olacağını hayal ediyorum, ancak umarım bazı yaratıcı ve benzersiz cevaplar görürüz!


@Fatalize write a program that outputs a positive even integerEvet olacak. Bütün çift sayılar 1,5 ile çarpılarak tam sayı
yazılır.

Bana dupe gibi görünüyor.
Outgolfer,

@EriktheOutgolfer Çok benzer, ancak bunun çok daha zor olacağına eminim (bariz bir şeyi kaçırmazsam).
TheLethalCoder

9
Kopyalanan karakterler, önemsiz dilleri geri alınamaz hale getirebilir. Tek karakterli, komut tarzı ya da ifade tabanlı bir dilde bir çözüm olup olmadığını merak ediyorum.
Keyu Gan

3
@TheLethalCoder Belki de en büyük engel full program. Yinelenen bir programın hala geçerli bir giriş noktası / işlevi olduğunu hayal etmek zor.
Keyu Gan

Yanıtlar:


22

Direkler , 7 5 4 bayt

TIO'da rastgele bir dil kullandım.

46vt

Açıklama:

Çevrimiçi Deneyin!

46    # Stack is [4, 6]

v     # Reverse the stack [6, 4]

t     # take top of stack 4

Doubled:

4466   # Stack is [4, 4, 6, 6]

vv     # Reverse the stack twice so it's the same [4, 4, 6, 6]

tt     # take top of stack 6 and again which is 6 again

Kaydedilen 2 sayesinde bayt officialaimm

Veedrac sayesinde 1 bayt kaydedildi


1
Hey, 4/6vtaynı zamanda çalışıyor ...
officialaimm

18
Ben gönülden rastgele bir TIO dili seçme ve bir meydan okuma için öğrenme stratejisini onaylıyorum
Skidsdev

@officialaimm haklısın, teşekkürler.
LiefdeWen

1
4/6 <- 4 hiçbir şeye bölünmez -> 4; ve sonra 6. 44 // 66 <- 4 bölü 4 -> 1; hiçbir şey hiçbir şeye bölünmez -> hiçbir şey; ve sonra 6 ve 6. Belki. Aferin ama.
V. Courtois,

1
46vtAynısını yapmaz mıydı ?
Veedrac


14

LibreOffice Calc, 8 bayt

=A2+3
19

Olarak kaydedin *.csvve LibreOffice Calc'ta açın. A1'de 22 alacaksınız.


İki katına:

==AA22++33

1199

A1’de 33 alacaksınız


1
zeki dil seçimi!
Giuseppe

11

MATL , 3 bayt

TnQ

Çevrimiçi deneyin! Veya iki katına versiyonu .

açıklama

MATL'de skaler değer (sayı, karakter, mantıksal değer), bu değeri içeren 1 × 1 dizisiyle aynıdır.

Normal sürüm:

T    % Push true
n    % Number of elements of true: gives 1
Q    % Add 1: gives 2

İki katlı sürüm:

TT   % Push [true, true]
n    % Number of elements of [true, true]: gives 2
n    % Number of elements of 2: gives 1
Q    % Add 1: gives 2
Q    % Add 1: gives 3

7
Cevap için TnQ ...: D [Bazen teşekkür etmek için kısa biçim olarak tnq kullanıyoruz]
officialaimm

8
@officialaimm :)[bazen onu nbir diziden ilk elemanlar elde etmek için kullanırız ...]
Luis Mendo

10

vim, 5

i1<esc>X<C-a>

İki katına çıkmadan:

i1<esc>  insert the literal text "1"
X        delete backwards - a no-op, since there's only one character
<C-a>    increment, giving 2

İki katına:

ii11<esc>   insert the literal text "i11"
<esc>       escape in normal mode does nothing
XX          since the cursor is on the last character, delete "i1"
<C-a><C-a>  increment twice, giving 3

10

Bu cevabın geçerli olup olmadığından emin değil. Sadece birisinin buradan fikir alabilmesi için buraya gönderin.

Node.js -p bayrağı, 7 bayt ile

By Alex Varga :

3/3*22

33//33**2222

Node.js -p bayrağı, 11 bayt ile

Eski olan:

3*2*0/1+22

33**22**00//11++2222

22 ve 33 numaralı çıkışlar.


33 nasıl yapmalı? TIO bunu yapamaz gibi görünüyor. Saat 00
V. Courtois

1
Nasıl yapılır:
3/3

@AlexVarga çok tatlı.
tsh

@ V.Courtois katı modunu kullanıyorsunuz
tsh

1
@EdmundReed -pifade değerini çıkarmak için bayrağa ihtiyaç duyuyor
tsh 18:17 '

10

Python 2 REPL, 11 bayt

(3/1)*(2/1)

Bu sadece 3 * 2 = 6 olarak değerlendirilir. Çoğaltılmış

((33//11))**((22//11))

bu da 3 ** 2 olarak değerlendirilir; ki bu, 3 olan 2 veya 9'dur.


Siteye Hoşgeldiniz. Bu piton herhangi bir çıktı üretmez ve bu nedenle geçerli bir cevap değildir. Ancak cevabınızı Python REPL olarak değiştirirseniz , bu çıktı üretir ve bu nedenle geçerli bir cevaptır. Bu cevabı silmeniz veya dili python 2'den python 2 repl'ye değiştirmeniz gerekecektir.
Buğday Sihirbazı

@WheatWizard Teşekkürler ve yardımlarınız için teşekkürler! Bunu düzgün yaptım mı?
Carl Schildkraut

8

APL, 7 bayt

⊃⍕⌊3×⍟2

Yazdırır 2.

⊃⊃⍕⍕⌊⌊33××⍟⍟22

Yazdırır 3.

Çevrimiçi deneyin!

Waaat?

Tek:

3×⍟2         → 2.079441542  ⍝  3 * ln 2
⌊2.079441542 → 2            ⍝  floor
⊃⍕           → '2'          ⍝  format and take first character

Çift:

⍟⍟22          → 1.128508398  ⍝  ln ln 22
×1.128508398  → 1            ⍝ signum
33×1          → 33           ⍝  33 * 1
⌊⌊33          → 33           ⍝  floor
⊃⊃⍕⍕          → '3'          ⍝  format and take first character

Lütfen yorumları dikey olarak hizalayabilir misiniz? Ya da farklı ayarlar veya döngü benim ucunda buna neden bir şey var mı böyle ?
Kevin Cruijssen

@KevinCruijssen Sanırım tarayıcınızın fontu bu, ancak tarayıcılar APL'yi zaten monospaced olarak göstermiyor. şu mayın prntscr.com/fwp0l0
Uriel

Ah, hala okunabilir ve ne olursa olsun harika bir cevap. :)
Kevin Cruijssen

Benim için tek alan olarak işler. Muhtemelen sadece yazı tipine bağlıdır ( prnt.sc/fwrnz1 ). Yorumlar kesinlikle kesinlikle aynı hizada değil: P
therealfarfetchd

@therealfarfetchd teşekkürler, son 3 sırayı güncelledim
Uriel


5

CJam , 4 bayt

],))

Normalde dene!

İki katına dene!

açıklama

Normal:

]     e# Wrap the stack in an array: []
 ,    e# Get its length: 0
  ))  e# Increment twice: 2

Çift:

]         e# Wrap the stack in an array: []
 ]        e# Wrap the stack in an array: [[]]
  ,       e# Get its length: 1
   ,      e# Get the range from 0 to n-1: [0]
    )     e# Pull out its last element: 0
     )))  e# Increment 3 times: 3

Aşırı yükler zor ...;)
Outgolfer Erik

AB],ayrıca çalışır.
geokavel




3

R , 11 bayt

8*(!0)+1*!1

Çevrimiçi deneyin!

!olumsuzlama ve **üstelleştirme (bir takma ad ^). Rakamlar boolelerde dönüştürülür olsun: 0için FALSEtüm diğerleri için TRUE. Boolean tamsayılar için dönüştürülür: FALSEetmek 0, TRUEiçin 1, bu yüzden !0==1, !1==0, !!00==0ve !!11==1.

8×1+1×0=8880+111=12


1
Sadece güvenerek bir çözüm bulmaya çalışıyordum *ve **sen beni yendin!
Giuseppe

@Giuseppe Çözümümün optimal olduğuna ikna olmadım (etraftaki parantezlere olan ihtiyaç !0sinir bozucu). Daha kısa bir şey olabilir -ve *henüz böyle bir çözüm bulamadım ...
Robin Ryder

2

Cubix , 6 bayt

O.1)W@

Yazdırır 2.

  O
. 1 ) W
  @

İter 1, )artışlarla, Wsol atlar Oçıkışları 2ve @bir program tamamlanır.

İki katına çıkar, belli ki OO..11))WW@@bir küpün üstünde:

    O O
    . .
1 1 ) ) W W @ @
. . . . . . . .
    . .
    . .

1İki kez basar, iki kez )artar, Wtekrar sola atlar, bu da onu sağa Okuzeye koyar , çıktısını alır 3ve bir sonraki komut @programı sonlandırır.

Çevrimiçi deneyin!

İki katına çevrimiçi!


2

Klein , 8 6 bayt

/3+@4\

Tek , çift

açıklama

Tek için program oldukça basit bir yol izler. İlk ayna, onu 4programın sonuna kadar yönlendiren ikinciye saptırır .

Çifte biraz daha karmaşık. İşte burada:

//33++@@44\\

İlk iki ayna aynı şekilde çalışır, ancak ipin başlangıcına saptırdığı iki katından dolayı yeni bir ayna vardır, ilk aynanın kopyası tarafından yakalanır ve sonuna doğru saptırılır. Bütün bunlar 33++6 olanı değerlendirir.


2

TI-Basic, 3 bayt

Tek:

int(√(8

Son ifade, TI-Basic'te dolaylı olarak döndürülür / yazdırılır; 2

Doubled:

int(int(√(√(88

İadeler / baskılar 3

TI-Basic belirtilmiş bir dildir ; int(, √(ve 8bellekteki her biri bayt'tır.


Teknik olarak, meydan okuma özelliği her karakterin iki katına çıktığını açıkça belirtiyor , ancak buna izin vereceğim ve şartnameyi güncelleyeceğim
Skidsdev

2

Ruby REPL, 8 bayt

";3#";22

REPL sadece değerlendirilen son değerini yazdırır: 22.

Doubled:

"";;33##"";;22

Bu süre 33değerlendirilen son değerdir. Dize bir kez daha atılır ve #bir yorum başlar.


2

> <>, 19 8 Bayt

32b*!{n;

Baskılar 22
Çevrimiçi deneyin!

Açıklama:

32b   push literals onto the stack: [3,2,11]
*     multiply the top two values: [3,22]
!     skip the next instruction
{     (skipped)
n     pop and print the top value from the stack (22)
;     end execution

Doubled:

3322bb**!!{{nn;;

Baskılar 33
Çevrimiçi deneyin!

Açıklama:

3322bb push literals onto the stack: [3,3,2,2,11,11]
**     multiply top values (twice): [3,3,2,242]
!      skip next instruction
!      (skipped)
{{     rotate the stack to the left (twice): [2,242,3,3]
nn     pop and print the top two values from the stack (33)
;      end execution

Eski Sürüm:
Normal:

11+!vn;
    n
    ;

Baskılar 2
Çevrimiçi deneyin!

Açıklama:

1    push 1 on the stack: [1]
 1    push 1 on the stack: [1,1]
  +    add top two values of the stack: [2]
   !    skip the next instruction
    v    (skipped)
     n    print the top value of the stack (2)
      ;    end execution

Doubled:

1111++!!vvnn;;
        nn
        ;;

Baskılar 3
Çevrimiçi deneyin!

Açıklama:

1111    push four 1's on the stack: [1,1,1,1]
    +    add top two values of the stack: [1,1,2]
     +    add top two values of the stack: [1,3]
      !    skip the next instruction
       !    (skipped)
        v    change direction of execution (down)
         n    print the top value of the stack (3)
          ;    end execution


5
Bence yeni hatları da kopyalaman gerekiyor.
Outgolfer Erik

@EriktheOutgolfer Artık yeni satır yok.
KSmarts

1

Zsh , 14 bayt

<:|echo 22
3
:

Çevrimiçi deneyin!

Golf kodu olmayan bir dilde tam bir program edinmek, kaynak kodlu bir şey basmak ve bunun gibi bir şeydir. Zsh bunun için çok kullanışlıdır, çünkü dosyalar ve heredocs örtülü olarak iletilir cat. Her iki durumda da ilk satıra bir göz atalım:

<:|echo 22            # Give the file : on stdin to cat. cat pipes to 'echo 22', which ignores stdin
<<::||eecchhoo  2222  # Start heredoc on following lines with EOF string '::', pass to cat.
                      # Since cat exits 0, 'eecchhoo 2222' is not executed

3Bir program olmadığı sürece , ilk program yalnızca yazdırır 22. İkinci program, 33fazladan yeni satırlarla çevrili olarak basılacak (çoğaltma nedeniyle).


Eğer 3bir fonksiyon / program / takma iseniz , o zaman bu 18 byte çözüm çalışmaya devam eder!

<:|echo 22\\c\
3
:

Çevrimiçi deneyin!

Sonuncusu \satırın devamıdır, yani yeni satır atılır ve yankı ifadesi etkin bir şekilde yapılır echo '22\c3'. \cNedenleri sonra baskı durdurmak için echo 22(aynı zamanda yeni satır bastırmak için olur).


1

Perl 6 , 14 bayt

'|d 3#';say 22

Çevrimiçi deneyin! İki katına dene!

Bu dd, çift programın STDERR'ye çıktısını almak için uygun olarak adlandırılmış hata ayıklama işlevini kullanır . Mantığı ayırmak için, ikiye katlanan programı tırnak işaretleri içine alıyoruz, bu sayede birbirlerini ikiye katladıktan sonra #, şimdi geçersiz normal programı yorumlamak için bir yorum karakteriyle birlikte iptal ediyoruz.



0

MathGolf , 2 bayt

▬)

Çevrimiçi deneyin! İki kat dene

Diğer cevaplara benzer şekilde, ilk komutun 1iki katına çıktığında bir çift bile ürettiği , ikincisi ise onu artırır. Bu durumda, ters üstel ( 0**0 = 0**0**0 = 1) kullandım, ancak !£≤°talimatlardan herhangi biri olabilir ve belki de kaçırdığımdan daha fazlası olabilirdi.


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.