Entrada:
- Uma string (o trecho de onda) com um comprimento
>= 2
. - Um número inteiro positivo n
>= 1
.
Saída:
Nós produzimos uma onda de linha única. Fazemos isso repetindo a sequência de entrada n vezes.
Regras do desafio:
- Se o primeiro e o último caractere da string de entrada corresponderem, nós o produziremos apenas uma vez na saída total (ou seja, o
^_^
comprimento 2 se tornará^_^_^
e não^_^^_^
). - A string de entrada não conterá espaços em branco / guias / novas linhas / etc.
- Se o seu idioma não suportar caracteres não ASCII, tudo bem. Contanto que ainda cumpra o desafio com entrada de onda somente ASCII.
Regras gerais:
- Isso é código-golfe , então a resposta mais curta em bytes vence.
Não permita que idiomas com código de golfe o desencorajem a postar respostas com idiomas que não sejam codegolf. Tente encontrar uma resposta o mais curta possível para 'qualquer' linguagem de programação. - As regras padrão se aplicam à sua resposta, para que você possa usar STDIN / STDOUT, funções / método com os parâmetros adequados, programas completos. Sua chamada.
- As brechas padrão são proibidas.
- Se possível, adicione um link com um teste para o seu código.
- Além disso, adicione uma explicação, se necessário.
Casos de teste:
_.~"( length 12
_.~"(_.~"(_.~"(_.~"(_.~"(_.~"(_.~"(_.~"(_.~"(_.~"(_.~"(_.~"(
'°º¤o,¸¸,o¤º°' length 3
'°º¤o,¸¸,o¤º°'°º¤o,¸¸,o¤º°'°º¤o,¸¸,o¤º°'
-__ length 1
-__
-__ length 8
-__-__-__-__-__-__-__-__
-__- length 8
-__-__-__-__-__-__-__-__-
¯`·.¸¸.·´¯ length 24
¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯
** length 6
*******
String & length of your own choice (be creative!)
>= 1
" parece meio pleonastic para mim ... :)Respostas:
Pyke,
151410 bytesExperimente aqui!
fonte
Python 3, 32 bytes
Concatena
n
cópias da sequência, removendo o primeiro caractere de todas as cópias, mas o primeiro se o primeiro caractere corresponder ao último.fonte
s[0]
es[-1]
pareço me referir ao primeiro e ao último byte, e não ao primeiro e ao último caractere. Edit: ah, espere, isso é Python 2 vs. Python 3. Ele funciona corretamente no Python 3. #05AB1E , 13 bytes
Usa a codificação CP-1252 .
Experimente online!
Explicação
-___-
e3
usado como entrada, por exemplo.fonte
JavaScript (ES6), 47 bytes
fonte
s=>n=>...
em vez de(s,n)=>
Perl, 29 bytes
Código de 28 bytes + 1 para
-p
.Agradeço ao @Dada por me ajudar a eliminar alguns bytes!
Uso
Exemplo online.
fonte
<>
vez de$'
como ele permite que você se livre-0
. E então você pode usar ems///e
vez de//;$_=
ganhar mais um byte :-)$
para corresponder ao final, ainda me salva bytes como não usar'
significa que eu posso soltá-lo tendo que ser salvo em um arquivo para salvar adicionando 3-p
e soltá-lo de volta para 1!$
da nova linha que você tinha anteriormente. (Desculpe o meu comentário não foi muito detalhado, eu estava com pressa ...)<>
na string de substituição. Mas sen
é separada por um espaço em vez de uma nova linha, a contagem de caracteres pode ser reduzido um pouco:s/(.+?) (\d+)/$1x$2/e
Perl, 23 bytes
Inclui +1 para
-p
Dê a sequência de entrada seguida pelo número em linhas separadas em STDIN
wave.pl
:Se o primeiro caractere da palavra não for um caractere especial de regex, esta versão de 22 bytes também funcionará:
fonte
/g
modificador quando você colou-lo embora ;-)MATL,
191714 bytesIsso funciona para o ASCII no interpretador online e para o Unicode e o ASCII quando executados usando o MATLAB.
Experimente Online!
Explicação
fonte
Retina , 29 bytes
As linhas 2 e 5 têm um espaço à direita.
Experimente online! (A primeira linha ativa um conjunto de testes separado por avanço de linha.)
fonte
Lote, 117 bytes
Toma o número de repetições como um parâmetro da linha de comandos e lê a string em STDIN.
fonte
Pitão, 13 bytes
Suíte de teste!
Explicação a seguir.
fonte
Gema, 41 caracteres
Exemplo de execução:
fonte
PowerShell v2 +, 48 bytes
Produz a sequência inteira uma vez, seguida por n-1 cópias da sequência ou substring, dependendo se o primeiro e o último caracteres correspondem.
O
.Substring()
método sai do índice fornecido até o final da string, portanto, se for$s[0]-eq$s[-1]
avaliado como false (0), obteremos a string inteira. Se essa afirmação for verdadeira (1), obtemos a substring começando no segundo caractere.fonte
VBA 119 bytes
Novo neste jogo e o vba vence com os bytes mais altos: P
PS: não posso acreditar que vba fica perto de JAVA HAHA
Explicação:
fonte
CJam,
1615 bytesExperimente online
Explicação:
fonte
K, 12 bytes
obrigado
fonte
{,/y#,$[(*x)~*|x;-1;0]_x}
Para 25 bytes lida com a primeira / última correspondência. Se você é regra quebra feliz 1, então você pode ter{,/y#,x}
para 8.PHP, 72 bytes
com o PHP 7.1 pode ser reduzido para 65 bytes
fonte
Pip , 18 bytes
Solução Regex, aproveitando a regra "sem espaços na entrada". Retorna a string de stdin e o número como um argumento da linha de comando.
Experimente online!
Explicação:
Assim,
a b
viraab
,a a
viraa
e o espaço no final da string é removido. Em seguida, o resultado é impresso automaticamente.fonte
Haskell, 59 bytes
Versão não destruída:
fonte
Java 10,
12311110910710210079 bytesExperimente online.
Alternativa com a mesma contagem de bytes ( 79 bytes ):
Experimente online.
Claro que tentarei responder minha própria pergunta. ;)
-5 bytes graças a @ dpa97 .
-21 bytes convertidos do Java 7 para 10.
Explicação:
fonte
.split
.s.substring(1)
é dois bytes mais curto. ;)Javascript ES6, 49 caracteres
Teste:
fonte
QBIC , 65 bytes
Acho que devo adicionar LEFT $ e RIGHT $ ao QBIC ...
Explicação:
fonte
C #, 79 bytes
Um pouco de um método absurdo de repetir uma string. Crie uma nova sequência do tamanho de repetição desejado e substitua cada caractere pela sequência a ser repetida. Fora isso, parece praticamente a mesma estratégia que muitas outras.
fonte
x
? Talvez seja melhor mudar isso para um espaço, pois " A string de entrada não conterá espaços em branco / tabs / new-lines / etc. ".x
. Ele cria axx...x
cadeia primeiro e depois substitui cada umax
sem reavaliar a cadeia desde o início pelo que precisa ser substituído.SpecBAS - 68 bytes
Usa inline-
IF
para verificar se o primeiro e o último caracteres são os mesmos. Caso contrário, imprima on
número da sequência de vezes. Caso contrário, divida a string no comprimento 1, repita isso e coloque o último caractere no final.Só pode aceitar caracteres ASCII (ou caracteres incorporados no SpecBAS IDE)
fonte
APL, 19 bytes
Uso:
Explicação:
⊃⍺=⊃⌽⍺
: veja se o primeiro caractere corresponde ao último caractere⍺↓⍨
: se for esse o caso, solte o primeiro caractere⊂
: coloque o resultado⍵⍴
: replicar⍵
vezes1↓
: solte o primeiro (este é menor que(⍵-1)⍴
)∊
: obtenha todos os elementos simples (desfaça o boxe)⍺,
: adicione uma instância da cadeia inteira à frentefonte
Postscript, 98 bytes
... mas você pode precisar de um 'flush' alinhado para que o seu interpretador PS libere o buffer de comunicação, outros seis bytes :(
fonte
Lisp comum (LispWorks), 176 bytes
Uso:
Explicação:
Ungolf:
fonte
Vim, 17 bytes
A maneira mais fácil de fazer isso é usar uma regex de referência remota que possa dizer se o primeiro e o último caracteres correspondem. Mas longas expressões regulares são longas. Nós não queremos isso.
A onda a repetir está no buffer. Estou assumindo que o número a ser repetido está no registro
"a
(digiteqaNq
N como o número para configurá-lo). A ideia é:Em seguida,
P
o texto excluído é exibido@a
.lDg*
: Essa manobra cria um regex que corresponde a qualquer primeiro caractere, independentemente de ser necessário escapar ou não, ou se é uma palavra ou não. (*
seria o suficiente para criar a regex com escape adequado, mas adicionaria\<\>
lixo indesejado se fosse um caractere de palavra, como_
.)p^
: O último passo foi confuso. Limpe até a posição original, iniciando a linha.v$
: No modo visual,$
por padrão, move para após o final da linha.?<C-P>$<CR>hd
: Se o regex anterior existir no final da linha, essa pesquisa será movida para ele; caso contrário, fique além do fim da linha. Mova para a esquerda a partir daí e realizamos a exclusão (tediosa) necessária.@aP
: Execute o número de repetição como uma macro a ser usada como argumento paraP
.fonte
Ruby, 38 bytes
Eu acho que isso é bastante auto-explicativo. Ainda estou pensando se há uma maneira mais concisa de representar o
s[0..-2]
bloco, mas ainda não o encontrei.fonte
Java (117 bytes)
fonte
b>0;b--
parab-->0;
. Além disso, por que estáb+
lác+=b+a.substring
? Ainda assim, é uma ótima primeira resposta se você a criar de forma independente. Aproveite a sua estadia aqui no PPCG! :) Além disso, você pode encontrar dicas de golfe em Java interessantes para ler.