Leia duas strings de stdin
.
Saída Yes
se uma string é uma versão rotacionada da outra.
Caso contrário, saídaNo
Casos de teste
Entrada
CodeGolf GolfCode
Resultado
Yes
Entrada
stackexchange changestackex
Resultado
Yes
Entrada
stackexchange changestack
Resultado
No
Entrada
Hello World
Resultado
No
Stackexchange Stackchangeex
voltar?No
. A rotação é uma mudança, como os LED rolagem sinaisRespostas:
APL (28)
Recebe entrada em duas linhas.
Explicação:
A←⍞
: leia uma linha de entrada e armazene-a em A⌽∘A¨⍳⍴A
: Gire A por x, para cada x em [1 .. comprimento A]. Dá uma lista, ou seja,estT stTe tTes Test
(⊂⍞)∊
: leia outra linha de entrada e veja se está nesta lista.1+
: adicione um a isso, fornecendo 1 se as seqüências de caracteres não foram giradas e 2 se elas foram'No' 'Yes'[
...]
: selecione o primeiro ou o segundo elemento da lista,'No' 'Yes'
dependendo se as seqüências de caracteres foram giradas ou não.fonte
Ruby
4941Edit: substituído gets.split por $ *
fonte
$*
é argv quando a pergunta foi especificadastdin
.Python, 70 bytes
A testar ...
fonte
stdin
, das quais esta solução não.print ['No
Python 70 caracteres
Obrigado ao gnibbler pelo truque da fatia.
fonte
nn nfn
, receberáYes
, o que está errado.<>
por,-
pois isso também resultará0
se eles tiverem o mesmo comprimento.J, 47
fonte
De acordo com a especificação (mesmos comprimentos de string):
Perl,
4243 caracteresSe cadeias de tamanhos diferentes forem permitidas, a solução seria:
Perl, 47 caracteres
rbo
fonte
nn nfn
, receberáYes
, o que está errado.Golfscript, 31
Esse comprimento de verificação primeiro, portanto, deve funcionar conforme o esperado.
fonte
:)
e=)
+1 para código muito felizJ, 57
Uso da amostra:
fonte
Windows PowerShell, 76
fonte
JavaScript, 51
O JavaScript não possui um host canônico, portanto, essa resposta é escrita em função de dois argumentos. A pontuação sobe para 60 se não permitirmos os recursos do JS 1.7 (fechamento de expressões).
No shell SpiderMonkey, seria (para uma pontuação de 71):
fonte
=>
função de notação;)Python,
6663Outra solução em 69 caracteres
fonte
print'YNeos'[a!=(2*a).replace(b,"")::2]
J, 84
fonte
JavaScript (120 caracteres)
Resultado:
fonte
Ruby, 58 (62) caracteres
Esta solução pressupõe que a entrada contenha apenas caracteres alfanuméricos (na verdade, tudo o que não tem um significado especial dentro de uma expressão regular está ok).
Uma solução que não tem essa restrição tem 4 caracteres a mais
fonte
Python, 71
fonte
nn nfn
, receberáYes
, o que está errado.PHP, 61
fonte
Ruby, 41
fonte
puts gets =~ /^(.+)(.*) \2\1$/ ?:Yes: :No
- aumenta para 41 caracteres.Haskell (
9896 caracteres)fonte
Q (
5043 caracteres)fonte
Scala 78
É uma pena a verificação do tamanho, sem ela a contagem cai para 54
fonte
"""val b=readLine split " " print(b(0).sorted==b(1).sorted)""".length
produz 56festança 56
fonte
GolfScript, 25 bytes
Como funciona
fonte
CJam, 21 bytes
Experimente online!
fonte
0
/ em1
vez deNo
/Yes
.Lua 115 chars
fonte
Programa C - 146
fonte
PHP, 82 caracteres
fonte
perl, 123 caracteres
fonte
Ruby,
3037Uma versão que imprime "true" e "false" em vez de "yes" e "no":
Ambos trabalham com strings de comprimento diferente (ao contrário do antigo)
fonte
Python 2, 86 caracteres
fonte
Perl (apenas uma solução rápida)
Uma correção para a solução das botas de borracha, sendo um novo usuário que eu sou, ainda não posso comentar, então vou postar uma nova resposta.
Como o método mencionado usa uma expressão regular criada a partir da entrada do usuário, é possível executar uma pequena injeção de regex, da seguinte maneira:
A correção é usar \ Q (também conhecido como quotemeta):
O código em si pode ser ainda mais reduzido usando 'say', mas isso é deixado como um exercício para o leitor :)
fonte
print+(qw/yes no/)[
você provavelmente pode escreverprint qw(yes no)[
quais são dois caracteres mais curtos.