Gerador palíndromo palíndrico
Crie um programa que converta a sequência de entrada em um palíndromo começando com a sequência de entrada. O programa em si deve ser um palíndromo.
Por exemplo, entrada:, neverodimprima neveroddoreven. Você deve manipular entradas com várias palavras e várias linhas também.
Isso parece muito semelhante a esta pergunta , exceto aqui que estamos gerando em vez de verificar. As chances são de que os mesmos truques serão empregados para tornar o programa um palíndromo.
— Sp3000 16/03/2015
Eu posso entender totalmente a questão com voto negativo, mas por que a resposta foi votada com baixa pontuação?
@JanDvorak Acho que é porque ele usa comentários para fazer o palíndromo, o que especificamente torna essa estratégia correta. Não é uma maneira muito interessante e é banido especificamente em pelo menos uma pergunta que requer código palindrômico: codegolf.stackexchange.com/q/28190/15599 . Tomek, bem-vindo à programação de quebra-cabeças e codegolf. Estou votando de qualquer maneira para que você tenha acesso à nossa sandbox meta.codegolf.stackexchange.com/q/2140/15599, no entanto, recomendo que você fique por aqui e responda algumas perguntas antes de fazer outra. Além disso, lembre-se de procurar perguntas semelhantes antes de postar #
As funções são permitidas (em vez de programas inteiros)?
Podemos usar um delimitador para o palíndromo gerado? ie neverod-> neverodadoreven(com o ameio)
— Rɪᴋᴇʀ 25/04
Eles são apenas:
Monádico ,e ⊢não faz nada nas cordas. Diádico ,é concatenação. Diádico ⊢retorna seu operando direito. E ⌽é obviamente reversão.
Observe que isso funciona apenas no Dyalog APL.
Aceita entrada até encontrar 0x00. Não termina, mas a saída estará correta.
Simétrico: sim; palindrômico:?
@ Blue Acho que não é possível criar um arquivo de imagem PNG palíndrico devido ao cabeçalho e rodapé. Além disso, a compactação PNG significa que os bytes da imagem quase certamente não são palíndromos.
@EsolangingFruit Embora se possa argumentar que a imagem equivalente a um palíndromo deve ser centrossimétrica.
Eu acho que você encontrou um bug no analisador GolfScript com o seu "super comentário". Lembre-se, um #comentário comum funcionaria tão bem lá.
@IlmariKaronen Seu não mim, }tem sido conhecido por ser um comentário Super desde idades :)
C ++, 162 bytes
Deus abençoe as duas barras lol
Haskell, 102 + 22 = 124 bytes
Isso deve ser executado com o Control.Applicativemódulo no escopo, que pode ser definido através do arquivo ghci init .ghci: :m Control.Applicative(-> +22 bytes).
Nenhum truque de comentário, apenas 7 funções em que 4 nunca são chamadas.
Se funções (em vez de programas) forem permitidas:
Haskell, 55 + 22 = 77 bytes
Uso f "qwer"->"qwerrewq"
Edit: a versão anterior estava errada.
Pitão, 11 bytes
No Pyth, qualquer coisa anterior a um espaço não é impressa. Então, simplesmente adicionamos o negativo da string a ela mesma, colocamos um espaço, iniciamos uma string e espelhamos o lado esquerdo da citação "
Pega uma sequência multilinha como entrada de stdin, gera uma representação Ruby dessa sequência concatenada ao contrário. Pode aparar um caractere substituindo ||por #para comentar o código morto na segunda linha.
s=gets p! =p steg=s
... verdade, eu não tenho idéia do que eu quis dizer com isso.
Idioma mais recente, não concorrente
Explicação: Acabei de iniciar o Jolf e acho que não estou explicando isso corretamente.
— incha
Bem-vindo ao PPCG! Vi sua outra resposta e agradeço-lhe com carinho por usar esse idioma! É minhas próprias invenções, espero que você goste :) Esta é uma solução muito boa, muito bem feita! Eu gosto do jeito que você usou ηna solução, muito bem feito. Você pode salvar dois bytes, eliminando as mu, como: a+i_i+a. (Jolf também tem uma entrada implícita para preencher o restante dos argumentos, mas isso não é um problema, pois apenas uma entrada é dada por vez.) Eu ainda manteria sua solução original na resposta.
@ Cᴏɴᴏʀ O'Bʀɪᴇɴ Obrigado! Acabei de escolher um idioma para o golfe que não parecia muito assustador e pulei, estou gostando de descobrir. Eu estava tentando descobrir de onde o η veio e percebi que era tentar fixar meu ponto de partida de + i_i +. Obrigado pela informação!
— swells
Conforme sugerido por @mazzy, o código pode ser reduzido em 12 bytes ao usar um intervalo estático. Isso, no entanto, limita o comprimento da entrada para 9KBytes. Teoricamente, seriam necessários 9 MBytes, mas isso diminuiria significativamente o código.
— J. Bergmann
Alternative 67 bytes:param($s)$s+-join$s[$s.Length..0]#]0..htgneL.s$[s$nioj-+s$)s$(marap
se o comprimento de cadeia de entrada inferior a 9Kbytes então $args|%{$_+-join$_[9Kb..0]}#}]0..bK9[_$nioj-+_${%|sgra$(55 bytes)
O FOG é mais novo que esse desafio, portanto não é competitivo.
Solução Alt em 19 bytes:
Ambos recebem entrada, duplicam e revertem e se juntam à pilha.
Além disso, não-concorrente: P
@ CᴏɴᴏʀO'Bʀɪᴇɴ oops. : P
tinyBF , 40
Meu primeiro pensamento foi Brainfuck, mas é impossível combinar os aparelhos ... felizmente tinyBF tem um controle de fluxo mais simples.
Sem comentários, ele usa uma sequência terminada nula como entrada e retorna o resultado em uma sequência terminada nula. Você pode testá-lo aqui , esteja avisado de que ele não será interrompido (embora o Firefox ao menos peça para interromper o script que não responde).
Observe que se você o codificar em instruções de 2 bits, o tamanho será reduzido para 10 bytes (não seria um palíndromo).
Eu tentei o meu melhor para encontrar uma solução que usasse apenas uma linha, mas não tive sorte.
Minha tentativa original em que cada linha é um palíndromo. Não acho que seja necessário para esse desafio, mas o incluí apenas por precaução.
— Noomann
Uma linha, mas ainda mais longa (73, já que lambdaé tão longa):print((lambda a:a+a[::-1])(input()))#)))(tupni()]1-::[a+a:a adbmal((tnirp
— no1xsyzy 18/18
Muito agradável. Estou menos familiarizado com as lambdas, mas estou lentamente me acostumando a elas. Obrigado por compartilhar.
— Noomann 18/09/19
Befunge , 37 bytes
A linha superior empurra e imprime todos os caracteres da entrada. A segunda linha (antes da @) imprime a pilha no sentido inverso, mas entramos no contional _para consumir o -1 gerado ao concluir a leitura da entrada. A outra metade do código (incluindo as novas linhas feias) torna a fonte um palíndromo, mas a nevasca é executada.
C # ( 33 32 + 1) * 2 = 68 66 bytes
salvou 2 bytes no uso de .Aggregate ()
Oh, o bom e velho lambda, você pode pegá-lo com
e depois chame-o com
— hstde
Bem simples, printé a entrada ( $_=<>) seguida pela reverse. reverseretorna $_porque o estamos usando no contexto escalar prefixando com ~~. Em seguida, combinamos ( m//usando ;como delimitador), no contexto nulo, contra o reverso do script.
Se pudermos garantir, não precisaremos criar um palíndromo, esrever,><=_$tnirppois podemos reduzir o código para 43 bytes :
Inclui código de 25 bytes + 1 para -p.
Eu não acho que isso seja válido, pois requer a -pbandeira que eu acho que não pode ser facilmente combinada com o conteúdo do script para criar um verdadeiro palíndromo. Praticamente as mesmas chamadas acima, exceto que se baseia no fato de que -ptambém adiciona um ;segundo plano (nos Perls mais recentes ...) para fechar o m//.
Pitão, 15
Observe o espaço no começo e no final.
Tarefa bastante chata em Pyth. z_zimprime o palíndromo desejado, mas imprime z(a sequência de entrada) e _zo inverso em duas linhas diferentes. +combina as duas palavras, mas +no final requer duas novas declarações no final (e no início). Eu escolho kek , que são apenas cadeias vazias. Em seguida, muito espaço em branco, que suprime a impressão (e a impressão de espaços vazios, que geram, naturalmente, quebras de linha).
Como o espaço em branco suprime todas as saídas, exceto a +z_z, você pode substituir ks e literal pela arity 0. Por exemplo, 1 2+ z_z +2 1ou T Z+ z_z +Z T.
Eu tenho um 11 em Pyth, que eu ainda não postei porque achei que você certamente o venceria;) #
Eu não estou usando o "truque de comentário", mas estou usando o truque de aspas escapadas lol.
Eu não acho que isso conta; os dois caracteres centrais são ";. Adicionar a ;como o último caractere dentro da string deve corrigir isso.
As it stands this answer is invalid. Please either fix it or remove it.
OBSERVAÇÃO: Se for permitido enviar neverodorevenpara a entrada neverod, que ainda é um palíndromo, isso pode ser feito em 1 byte, com o palindromize incorporado:
Conjunto x86-64 (convenção de chamada Microsoft x64), 89 bytes:
Observe que o código após a retinstrução at 2Cé inacessível, portanto não importa que seja um absurdo