Tempo duplo não é tempo duplo

36

Baseado neste desafio.

No jogo de ritmo osu! , o modificador de dificuldade "Tempo duplo" na verdade só aumenta a velocidade em 50%.

Sua tarefa é escrever um programa que gera um resultado positivo mesmo inteiro (superior a 0), e quando cada byte / personagem (a sua escolha qual) em seu código fonte é duplicado, deve saída o número multiplicado por 1,5.

Por exemplo, se o seu código-fonte é ABCe gera 6, AABBCCdeve gerar 9.

Seguindo as regras do desafio original:

Regras

  • Você deve criar um programa completo.
  • A fonte inicial deve ter pelo menos 1 byte de comprimento.
  • Ambos os números inteiros devem estar na base 10 (é proibido produzi-los em qualquer outra base ou com notação científica).
  • Seu programa não deve receber entrada (ou ter uma entrada vazia e não utilizada) e não deve gerar nenhum erro (os avisos do compilador não são considerados erros).
  • É permitida a saída de números inteiros com espaços à direita / à direita.
  • Você não pode assumir uma nova linha entre cópias da sua fonte.
  • Isso é , portanto, o menor número de bytes em cada idioma vence!
  • Aplicam-se lacunas padrão .

Eu imagino que isso será muito menos trivial do que o desafio original, mas espero que possamos ver algumas respostas criativas e únicas!

Skidsdev
fonte
@Fatalize write a program that outputs a positive even integerSim, será. Cada número par pode ser multiplicado por 1,5 para resultar em um número inteiro inteiro
Skidsdev 17/07/17
Parece um idiota para mim.
Erik the Outgolfer
@EriktheOutgolfer Muito parecido, mas tenho certeza de que este será muito mais difícil (a menos que eu esteja perdendo algo óbvio).
TheLethalCoder
9
A duplicação de caracteres pode tornar os idiomas triviais intransitáveis. Gostaria de saber se existe uma solução em uma linguagem não baseada em expressões ou no estilo de comando de caractere único.
precisa
3
@TheLethalCoder Talvez o maior obstáculo seja full program. É difícil imaginar que um programa duplicado ainda tenha um ponto / função de entrada válido.
precisa

Respostas:

22

Postes , 7 5 4 bytes

Escolheu um idioma aleatório no TIO usou-o

46vt

Explicação:

Experimente Online!

46    # Stack is [4, 6]

v     # Reverse the stack [6, 4]

t     # take top of stack 4

Dobrado:

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

Guardado 2 bytes graças a officialaimm

Guardado 1 bytes graças a Veedrac

LiefdeWen
fonte
1
Hey, 4/6vtfunciona tão bem ...
officialaimm
18
Eu sinceramente aprovar a estratégia de escolher uma linguagem TIO aleatória e aprendendo para um desafio
Skidsdev
@officialaimm você está certo, obrigado.
LiefdeWen
1
4/6 <- 4 dividido por nada -> 4; e então 6. 44 // 66 <- 4 dividido por 4 -> 1; nada dividido por nada -> nada; e depois 6 e 6. Talvez. Bem feito embora.
V. Courtois
1
Não 46vtfaria o mesmo?
Veedrac 17/07
21

Geléia , 2 bytes

!‘

Experimente online!

Explicação:

!‘ Implicit 0
!  Factorial
 ‘ Increment

Versão dobrada:

!!‘‘

Experimente online!

Explicação:

!!‘‘ Implicit 0
!    Factorial
 !   Factorial
  ‘  Increment
   ‘ Increment
Erik, o Outgolfer
fonte
Se você fizer uma terceira vez, passa de 3 -> 4, não de 3> 4,5?
Tuskiomi
@tuskiomi Não, porque não é esperado que isso aconteça.
Erik the Outgolfer
14

LibreOffice Calc, 8 bytes

=A2+3
19

Salve-o como *.csve abra-o no LibreOffice Calc. Você terá 22 na A1.


Dobre-os:

==AA22++33

1199

Você terá 33 na A1

tsh
fonte
1
escolha inteligente de idioma!
Giuseppe
11

MATL , 3 bytes

TnQ

Experimente online!Ou versão duplicada .

Explicação

No MATL, um valor escalar (número, caractere, valor lógico) é o mesmo que uma matriz 1 × 1 que contém esse valor.

Versão normal:

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

Versão dobrada:

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
Luis Mendo
fonte
7
TnQ para a resposta ...: D [Às vezes, usamos tnq como um atalho para agradecer] #
officialaimm
8
@officialaimm :)[às vezes usar isso para obter os primeiros nelementos de uma matriz ...]
Luis Mendo
10

vim, 5

i1<esc>X<C-a>

Sem duplicar:

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

Com duplicação:

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
Maçaneta da porta
fonte
10

Não tenho certeza se esta resposta é válida. Basta postar aqui, caso alguém possa ter idéias daqui.

Node.js com sinalizador -p, 7 bytes

Por Alex Varga :

3/3*22

33//33**2222

Node.js com sinalizador -p, 11 bytes

Antigo:

3*2*0/1+22

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

Saída 22 e 33.

tsh
fonte
Como é que deve fazer 33? O TIO não parece capaz de fazê-lo. Trava em 00.
V. Courtois
1
Que tal: 3/3 * 22
Alex Varga
@AlexVarga so sweet.
tsh
@ V.Courtois você está usando o modo estrito
tsh
1
@EdmundReed precisa de -pflag para gerar valor de expressão
tsh
10

Python 2 REPL, 11 bytes

(3/1)*(2/1)

Isso simplesmente avalia como 3 * 2 = 6. Duplicado, é

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

que é avaliado como 3 ** 2, que é 3 com a potência de 2 ou 9.

Carl Schildkraut
fonte
Bem vindo ao site. Este python não produz nenhuma saída e, portanto, não é uma resposta válida. No entanto, se você alterar sua resposta para ser um Python REPL , isso produzirá saída e, portanto, é uma resposta válida. Você precisará excluir esta resposta ou alterar o idioma de python 2 para python 2 repl.
Assistente de trigo
@WheatWizard Obrigado e obrigado por ajudar! Eu fiz isso corretamente?
Carl Schildkraut
8

APL, 7 bytes

⊃⍕⌊3×⍟2

Imprime 2.

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

Imprime 3.

Experimente online!

Waaat?

Solteiro:

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

Em dobro:

⍟⍟22          → 1.128508398  ⍝  ln ln 22
×1.128508398  → 1            ⍝ signum
33×1          → 33           ⍝  33 * 1
⌊⌊33          → 33           ⍝  floor
⊃⊃⍕⍕          → '3'          ⍝  format and take first character
Uriel
fonte
Você poderia alinhar os comentários verticalmente? Ou temos configurações diferentes ou algo que faz com que eu acabe com esse loop ?
Kevin Cruijssen 17/07/19
@KevinCruijssen Acho que essa é a fonte do seu navegador, mas os navegadores não processam o APL como monoespaçado. essa mina prntscr.com/fwp0l0
Uriel
Ah, bem, ainda é legível e uma ótima resposta, independentemente. :)
Kevin Cruijssen
Torna-se monospace para mim. Provavelmente depende apenas da fonte ( prnt.sc/fwrnz1 ). Os comentários definitivamente não estão alinhados: P
therealfarfetchd
@therealfarfetchd obrigado, eu atualizei as últimas 3 linhas
Uriel
5

Na verdade , 3 bytes

1u*

Experimente online!

Explicação:

1u* Errors are ignored
1   Push 1
 u  Increment
  * Multiply

Versão dobrada:

11uu**

Experimente online!

Explicação:

11uu** Errors are ignored
1      Push 1
 1     Push 1
  u    Increment
   u   Increment
    *  Multiply
     * Multiply
Erik, o Outgolfer
fonte
5

CJam , 4 bytes

],))

Experimente normalmente!

Experimente dobrou!

Explicação

Normal:

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

Em dobro:

]         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
Gato de negócios
fonte
As sobrecargas são complicadas ...;)
Erik the Outgolfer
AB],também funciona.
geokavel
4

05AB1E , 2 bytes

X>

Experimente online!

Explicação:

X> Only top of stack is printed
X  Push X (default 1)
 > Increment

Versão dobrada:

XX>>

Experimente online!

Explicação:

XX>> Only top of stack is printed
X    Push X (default 1)
 X   Push X (default 1)
  >  Increment
   > Increment
Erik, o Outgolfer
fonte
4

Neim , 2 bytes

𝐓>

Experimente online!

Explicação:

𝐓> Implicit 0
𝐓  Factorial
 > Increment

Versão dobrada:

𝐓𝐓>>

Experimente online!

𝐓𝐓>> Implicit 0
𝐓    Factorial
 𝐓   Factorial
  >  Increment
   > Increment
Erik, o Outgolfer
fonte
4 das 5 respostas ... você realmente está fazendo isso nesta!
TheLethalCoder
5
@TheLethalCoder Pelo menos ainda não são 15. ;)
Erik the Outgolfer
3

Pitão, 3 bytes

he1

Experimente aqui.

Explicação:

he1
h   Increment
 e   Last digit
  1   1

Versão dobrada:

hhee11

Experimente aqui.

Explicação:

hhee11
h      Increment
 h      Increment
  e      Last digit
   e      Last digit
    11     11
Erik, o Outgolfer
fonte
1
uma he11 de uma resposta
Uriel
3

R , 11 bytes

8*(!0)+1*!1

Experimente online!

!é negação e **é exponenciação (um apelido para ^). Os numéricos são convertidos em booleanos: 0para FALSE, todos os outros para TRUE. Booleans são convertidos para inteiros: FALSEpara 0, TRUEpara 1, então !0==1, !1==0,!!00==0 e!!11==1 .

A versão única calcula assim 8×1+1×0 0=8e a versão dupla calcula 880 0+111=12.

Robin Ryder
fonte
1
Eu estava apenas tentando encontrar uma solução baseada em *e **, mas você me venceu!
Giuseppe
@ Giuseppe Não estou convencido de que minha solução seja ótima (a necessidade de colchetes !0é irritante). Pode haver algo mais curto com -e *, mas ainda não encontrei essa solução ...
Robin Ryder
2

Cubix , 6 bytes

O.1)W@

Imprime 2.

  O
. 1 ) W
  @

Empurra 1, )incrementa, Wpula para a esquerda para a Oqual sai 2e @termina o programa.

Dobrado, é obviamente o OO..11))WW@@que em um cubo é:

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

Ele pressiona 1duas vezes, )aumenta duas vezes, Wpula para a esquerda novamente, o que o coloca à direita, na Odireção norte, que sai 3e, em seguida, o próximo comando é o @final do programa.

Experimente online!

Duplicou online!

Giuseppe
fonte
2

Klein , 8 6 bytes

/3+@4\

Solteiro , Duplo

Explicação

Para o single, o programa segue um caminho bastante direto. O primeiro espelho desvia-o para o segundo que o desvia através do4 até o final do programa.

O duplo é um pouco mais complexo. Aqui está:

//33++@@44\\

Os dois primeiros espelhos funcionam da mesma forma, no entanto, há um novo espelho devido à duplicação que desvia o ip de volta ao início, é capturado pela duplicata do primeiro espelho e desviado para o final. Tudo o que é executado é o 33++que é avaliado em 6.

Assistente de Trigo
fonte
2

TI-Basic, 3 bytes

Solteiro:

int(√(8

A última expressão é implicitamente devolvida / impressa no TI-Basic, pelo que é impressa 2

Dobrado:

int(int(√(√(88

Devoluções / impressões 3

TI-Basic é uma linguagem tokenizada ; int(,, √(e 8são cada um byte na memória.

pizzapants184
fonte
Tecnicamente a especificação desafio afirma explicitamente quando cada personagem é dobrada, mas vou permitir que este e atualizar a especificação
Skidsdev
2

REPL Ruby, 8 bytes

";3#";22

O REPL imprime apenas o último valor avaliado: 22 .

Dobrado:

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

Este tempo 33é o último valor avaliado. A sequência é descartada mais uma vez e a #inicia um comentário.

m-chrzan
fonte
2

> <>, 19 8 bytes

32b*!{n;

Impressões 22
Experimente online!

Explicação:

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

Dobrado:

3322bb**!!{{nn;;

Impressões 33
Experimente online!

Explicação:

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

Versão antiga:
Normal:

11+!vn;
    n
    ;

Impressões 2
Experimente online!

Explicação:

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

Dobrado:

1111++!!vvnn;;
        nn
        ;;

Impressões 3
Experimente online!

Explicação:

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

KSmarts
fonte
5
Eu acho que você deve duplicar as novas linhas também.
Erik the Outgolfer
@EriktheOutgolfer Não há mais novas linhas.
KSmarts 28/09
1

Zsh , 14 bytes

<:|echo 22
3
:

Experimente online!

Obter um programa completo em um idioma não-golfe para imprimir qualquer coisa com o código-fonte duplicado como esse é um desafio. O Zsh é muito útil para isso, porque arquivos e heredocs são implicitamente transmitidos para cat. Vamos dar uma olhada na primeira linha nos dois casos:

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

Enquanto 3não for um programa, o primeiro programa será impresso apenas 22. O segundo programa será impresso 33rodeado por novas linhas extras (devido à duplicação).


Se 3for uma função / programa / alias, essa solução de 18 bytes ainda funcionará!

<:|echo 22\\c\
3
:

Experimente online!

A última \é a continuação da linha; portanto, a nova linha é descartada, efetivamente fazendo a declaração de eco echo '22\c3'. As \ccausas eco para parar de imprimir depois 22(o que também acontece para suprimir a nova linha).

GammaFunction
fonte
1

Perl 6 , 14 bytes

'|d 3#';say 22

Experimente online! Experimente dobrou!

Isso usa a função de depuração convenientemente nomeada ddpara gerar o programa duplicado para STDERR. Para separar a lógica, colocamos o programa duplicado entre aspas, que depois se cancelam quando duplicados, junto com um caractere #de comentário para comentar o programa normal agora inválido.

Brincadeira
fonte
0

MathGolf , 2 bytes

▬)

Experimente online! Tente dobrar

Semelhante a outras respostas, a primeira instrução produz um 1par quando duplicada e a segunda a incrementa. Nesse caso, usei exponenciação reversa ( 0**0 = 0**0**0 = 1), mas também poderia ter sido uma das !£≤°instruções e talvez até mais que eu tenha perdido.

Brincadeira
fonte