Waktu ganda bukan waktu ganda


36

Berdasarkan tantangan ini .

Dalam permainan ritme osu! , pengubah kesulitan "Dua kali" sebenarnya hanya meningkatkan kecepatan hingga 50%.

Tugas Anda, adalah untuk menulis sebuah program yang output positif bahkan bilangan bulat (lebih tinggi dari 0), dan ketika setiap byte / karakter (pilihan Anda yang) dalam kode sumber Anda diduplikasi, harus keluaran nomor dikalikan dengan 1,5.

Sebagai contoh jika kode sumber Anda ABCdan output 6, maka AABBCCoutput 9.

Mengikuti aturan tantangan aslinya:

Aturan

  • Anda harus membangun program lengkap.
  • Sumber awal harus minimal 1 byte.
  • Kedua bilangan bulat harus berada di basis 10 (mengeluarkannya di basis lain atau dengan notasi ilmiah dilarang).
  • Program Anda tidak boleh mengambil input (atau memiliki input kosong yang tidak digunakan) dan tidak boleh membuang kesalahan apa pun (peringatan kompiler tidak dianggap sebagai kesalahan).
  • Mengeluarkan bilangan bulat dengan spasi tambahan / spasi diijinkan
  • Anda mungkin tidak menganggap baris baru antara salinan sumber Anda.
  • Ini adalah , sehingga byte paling sedikit di setiap bahasa menang!
  • Berlaku celah default .

Saya membayangkan ini akan jauh lebih sepele daripada tantangan aslinya, tetapi mudah-mudahan kita akan melihat beberapa jawaban yang kreatif dan unik!


@Fatalize write a program that outputs a positive even integerYa itu akan. Setiap bilangan genap dapat dikalikan 1,5 untuk menghasilkan bilangan bulat utuh
Skidsdev

Sepertinya saya seorang penipu.
Erik the Outgolfer

@EriktheOutgolfer Sangat mirip tapi saya yakin yang satu ini akan menjadi jauh lebih sulit (kecuali saya kehilangan sesuatu yang jelas).
TheLethalCoder

9
Duplikasi karakter dapat membuat bahasa yang sepele tidak bisa dihilangkan. Saya bertanya-tanya apakah ada solusi dalam bahasa berbasis karakter tunggal-perintah-gaya atau ekspresi.
Keyu Gan

3
@TheLethalCoder Mungkin kendala terbesar adalah full program. Sulit membayangkan program yang digandakan masih memiliki titik masuk / fungsi yang valid.
Keyu Gan

Jawaban:


22

Pylons , 7 5 4 byte

Memilih bahasa acak di TIO menggunakannya

46vt

Penjelasan:

Cobalah secara Online!

46    # Stack is [4, 6]

v     # Reverse the stack [6, 4]

t     # take top of stack 4

Dua kali lipat:

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

Disimpan 2 byte berkat officialaimm

Disimpan 1 byte berkat Veedrac


1
Hei, 4/6vtbekerja juga ...
officialaimm

18
Saya dengan sepenuh hati menyetujui strategi memilih bahasa TIO acak dan mempelajarinya untuk sebuah tantangan
Skidsdev

@ resmi Anda benar, terima kasih.
LiefdeWen

1
4/6 <- 4 dibagi dengan tidak ada -> 4; dan kemudian 6. 44 // 66 <- 4 dibagi 4 -> 1; tidak ada yang dibagi dengan tidak ada -> tidak ada; dan kemudian 6 dan 6. Mungkin. Bagus sekali.
V. Courtois

1
Tidak akan 46vtmelakukan hal yang sama
Veedrac


14

LibreOffice Calc, 8 byte

=A2+3
19

Simpan sebagai *.csvdan buka di LibreOffice Calc. Anda akan mendapatkan 22 dalam A1.


Gandakan mereka:

==AA22++33

1199

Anda akan mendapatkan 33 dalam A1


1
pilihan bahasa yang cerdas!
Giuseppe

11

MATL , 3 byte

TnQ

Cobalah online! Atau versi dua kali lipat .

Penjelasan

Dalam MATL nilai skalar (angka, karakter, nilai logis) sama dengan array 1 × 1 yang berisi nilai itu.

Versi normal:

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

Versi dua kali lipat:

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
TnQ untuk jawabannya ...: D [Kami terkadang menggunakan tnq sebagai bentuk singkat untuk ucapan terima kasih]
officialaimm

8
@officialaimm :)[kita terkadang menggunakannya untuk mendapatkan nelemen pertama dari array ...]
Luis Mendo

10

vim, 5

i1<esc>X<C-a>

Tanpa menggandakan:

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

Dengan menggandakan:

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

Tidak yakin apakah jawaban ini valid. Cukup posting di sini kalau-kalau ada yang bisa mendapat ide dari sini.

Node.js dengan flag -p, 7 byte

Oleh Alex Varga :

3/3*22

33//33**2222

Node.js dengan flag -p, 11 byte

Yang lama:

3*2*0/1+22

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

Output 22 dan 33.


Bagaimana seharusnya itu dilakukan 33? TIO sepertinya tidak bisa melakukannya. Mengunci pada 00.
V. Courtois

1
Bagaimana dengan:
3/3

@AlexVarga sangat manis.
tsh

@ V.Courtois Anda menggunakan mode ketat
tsh

1
@ EdmundReed membutuhkan -pflag untuk menampilkan nilai ekspresi
tsh

10

Python 2 REPL, 11 byte

(3/1)*(2/1)

Ini hanya mengevaluasi ke 3 * 2 = 6. Digandakan, itu

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

yang dievaluasi menjadi 3 ** 2, yaitu 3 pangkat 2, atau 9.


Selamat datang di situs ini. Python ini tidak menghasilkan output apa pun dan karenanya bukan jawaban yang valid. Namun jika Anda mengubah jawaban Anda menjadi Python REPL , ini menghasilkan output dan dengan demikian merupakan jawaban yang valid. Anda harus menghapus jawaban ini atau mengubah bahasa dari python 2 menjadi python 2 repl.
Wheat Wizard

@WheatWizard Terima kasih, dan terima kasih telah membantu! Apakah saya melakukan ini dengan benar?
Carl Schildkraut

8

APL, 7 byte

⊃⍕⌊3×⍟2

Cetakan 2.

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

Cetakan 3.

Cobalah online!

Waaat?

Tunggal:

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

Dua kali lipat:

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

Bisakah Anda menyelaraskan komentar secara vertikal? Atau apakah kita memiliki pengaturan yang berbeda atau sesuatu yang menyebabkannya pada saya untuk mengulang seperti ini ?
Kevin Cruijssen

@KevinCruijssen Saya pikir itu adalah font browser Anda, tetapi browser tidak membuat APL sebagai monospace. that mine prntscr.com/fwp0l0
Uriel

Ah well, masih bisa dibaca dan jawaban yang bagus. :)
Kevin Cruijssen

Ini menjadikan sebagai monospace bagi saya. Mungkin hanya tergantung pada font ( prnt.sc/fwrnz1 ). Komentar pasti tidak selaras: P
therealfarfetchd

@therealfarfetchd terima kasih, saya telah memperbarui 3 baris terakhir
Uriel


5

CJam , 4 byte

],))

Cobalah secara normal!

Coba dua kali lipat!

Penjelasan

Normal:

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

Dua kali lipat:

]         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

Kelebihan itu rumit ...;)
Erik the Outgolfer

AB],juga berfungsi.
geokavel




3

R , 11 byte

8*(!0)+1*!1

Cobalah online!

!adalah negasi, dan **eksponensial (alias untuk ^). Numerik dapat dikonversi menjadi boolean: 0untuk FALSE, semua lainnya menjadi TRUE. Booleans bisa dikonversi ke bilangan bulat: FALSEuntuk 0, TRUEuntuk 1, jadi !0==1, !1==0, !!00==0dan!!11==1 .

Versi tunggal demikian menghitung 8×1+1×0=8, dan versi ganda menghitung 880+111=12.


1
Saya hanya mencoba untuk menemukan solusi yang mengandalkan *dan **, tetapi Anda mengalahkan saya untuk itu!
Giuseppe

@ Giuseppe Saya tidak yakin solusi saya optimal (kebutuhan untuk tanda kurung !0mengganggu). Mungkin ada sesuatu yang lebih pendek dengan -dan *, tetapi saya belum menemukan solusi seperti itu ...
Robin Ryder

2

Cubix , 6 byte

O.1)W@

Cetakan 2.

  O
. 1 ) W
  @

Menekan 1, )menambah, Wmelompat ke kiri untuk Ooutput mana 2, dan @menyelesaikan program.

Menggandakan, itu jelas OO..11))WW@@, yang pada sebuah kubus adalah:

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

Itu mendorong 1 dua kali, )menambah dua kali, Wmelompat ke kiri lagi, yang menempatkannya di sebelah kanan Omenuju utara, yang menghasilkan 3, dan kemudian perintah berikutnya adalah @yang menghentikan program.

Cobalah online!

Gandakan online!


2

Klein , 8 6 byte

/3+@4\

Tunggal , ganda

Penjelasan

Untuk single program mengikuti jalur yang cukup mudah. Cermin pertama membelokkannya ke cermin kedua yang membelokkannya melalui jendela4 akhir program.

Gandanya sedikit lebih kompleks. Ini dia:

//33++@@44\\

Dua mirror pertama bekerja sama, namun ada mirror baru karena penggandaan yang membelokkan ip kembali ke awal, ia ditangkap oleh duplikat mirror pertama dan dibelokkan ke ujung. Semua yang dijalankan adalah 33++yang dievaluasi menjadi 6.


2

TI-Basic, 3 byte

Tunggal:

int(√(8

Ekspresi terakhir secara implisit dikembalikan / dicetak dalam TI-Basic, jadi ini dicetak 2

Dua kali lipat:

int(int(√(√(88

Pengembalian / cetakan 3

TI-Basic adalah bahasa tokenized ; int(,, √(dan 8masing-masing satu byte dalam memori.


Secara teknis spec tantangan secara eksplisit menyatakan kapan setiap karakter digandakan, tetapi saya akan mengizinkan ini dan memperbarui spec
Skidsdev

2

Ruby REPL, 8 byte

";3#";22

REPL hanya mencetak nilai terakhir yang dievaluasi: 22 .

Dua kali lipat:

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

Waktu ini 33adalah nilai terakhir yang dievaluasi. String dibuang sekali lagi, dan #mulai komentar.


2

> <>, 19 8 Bytes

32b*!{n;

Cetakan 22
Coba online!

Penjelasan:

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

Dua kali lipat:

3322bb**!!{{nn;;

Cetakan 33
Coba online!

Penjelasan:

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

Versi Lama:
Normal:

11+!vn;
    n
    ;

Cetakan 2
Coba online!

Penjelasan:

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

Dua kali lipat:

1111++!!vvnn;;
        nn
        ;;

Cetakan 3
Coba online!

Penjelasan:

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
Saya pikir Anda juga harus menggandakan baris baru.
Erik the Outgolfer

@EriktheOutgolfer Tidak ada baris baru lagi.
KSmarts

1

Zsh , 14 byte

<:|echo 22
3
:

Cobalah online!

Mendapatkan program lengkap dalam bahasa non-golf untuk mencetak apa pun dengan kode sumber yang digandakan seperti ini adalah sebuah tantangan. Zsh sangat berguna untuk ini, karena file dan heredocs secara implisit diteruskan ke cat. Mari kita lihat baris pertama dalam kedua kasus:

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

Selama 3bukan program, program pertama hanya akan mencetak 22. Program kedua akan dicetak 33dikelilingi oleh baris baru tambahan (karena duplikasi).


Jika 3fungsi / program / alias, maka solusi 18 byte ini akan tetap berfungsi!

<:|echo 22\\c\
3
:

Cobalah online!

Yang terakhir \adalah kelanjutan garis, sehingga baris baru dibuang, secara efektif membuat pernyataan gema echo '22\c3'. The \cpenyebab menggemakan berhenti mencetak setelah 22(yang juga terjadi untuk menekan baris baru).


1

Perl 6 , 14 byte

'|d 3#';say 22

Cobalah online! Coba dua kali lipat!

Ini menggunakan fungsi debug yang dinamai dengan nyaman dduntuk menampilkan program yang digandakan ke STDERR. Untuk memisahkan logika, kami membungkus program yang digandakan dalam tanda kutip, yang kemudian membatalkan satu sama lain ketika digandakan, bersama dengan karakter #komentar untuk mengomentari program normal yang sekarang tidak valid.



0

MathGolf , 2 byte

▬)

Cobalah online! Coba gandakan

Mirip dengan jawaban lain dalam instruksi pertama yang menghasilkan 1bahkan ketika digandakan dan yang kedua menambahnya. Dalam hal ini, saya telah menggunakan reverse exponentiation ( 0**0 = 0**0**0 = 1) tetapi juga bisa berupa !£≤°instruksi dan mungkin lebih dari yang saya lewatkan.


Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.