Afunde esse Bismark! (Errr, porco)


8

Pig-latin é um idioma inventado que é traduzido movendo a primeira letra de uma palavra para o final e adicionando ay-o ao final. Por exemplo: hellotraduz para porco-latino como ellohay. Portanto, traduzindo volta porco-latino para o Inglês é deixar cair o ayno final e movendo-se a última letra do início (como oodbyegaya goodbye). Ao escrevê-lo, algumas pessoas colocam um -no final antes de mover a primeira letra para maior clareza, então lê-se (por exemplo) em ello-hayvez de ellohaypara hello. Usaremos esta versão hifenizada para esse desafio.

Objetivo

Desfazer uma sequência de caracteres latinos de porco.

Instruções

Escreva um programa / função que aceite um argumento, uma única palavra na forma de uma string. Se essa palavra estiver em latim porco, o programa / função deve exibir ( returnou imprimi-lo) a palavra não latina. Se não for latim-porco, use a palavra como está.

O porco latino para este desafio estará no seguinte formato:

ello-hay

Se a palavra terminar -*ay, será em latim porco, onde *é um caractere curinga único.

Caracteres que não sejam letras devem ser tratados como uma letra normal. Para vários traços, ignore todos, exceto o último.

Exemplos

Usando a unpig()função Python fictícia para demonstração.

unpig("ello-hay")    #=> hello
unpig("hello-world") #=> hello-world
unpig("hello")       #=> hello
unpig("pple-aay")    #=> apple
unpig("apple")       #=> apple
unpig("ig-Stay")     #=> ig-Stay (+1 to ETHproductions for noticing.)
unpig("ello----hay") #=> hello---
unpig("la$s-gay")    #=> gla$s
unpig("ig-pay-yay")  #=> yig-pay

Regras

  1. Aplicam-se brechas padrão
  2. Isso é , então o código mais curto vence.
  3. Funções internas (especificamente para essa finalidade) não são permitidas.
  4. Usar cabeçalho # Language, XX bytes

Entre os melhores

Respostas:


5

JavaScript (ES6), 34 bytes

s=>s.replace(/(.*)-(.)ay$/,'$2$1')

Casos de teste


Isso é uma função? Eu não faço JS (ES6).
juniorRubyist

Eu literalmente tinha a mesma solução exata, excepto o uso de aspas duplas em vez de aspas simples
ETHproductions

Nvm. Ótimo começo!
juniorRubyist

@juniorRubyist É uma função anônima que pode ser atribuída a qualquer variável (neste caso 'unpig').
officialaimm

Parece imbatível.
9788 Steve Jobs,


3

Python 2 , 48 46 bytes

-2 bytes graças ao xnor.

Essas são funções lambda anônimas às quais podem ser atribuídas, digamos unpig.

lambda s:[s,s[-3]+s[:-4]][s[-4]+s[-2:]=="-ay"]

Experimente online!

Solução Regex, 49 bytes

lambda s:re.sub('(.*)-(.)ay',r'\2\1',s)
import re

Experimente online!


1
Você não precisa usar and/orquando o curto-circuito não é necessário. A seleção de uma lista funciona e é mais curta.
xnor

2

Python 2.7, 68 55 52 bytes

def up(s):print(s,s[-3]+s[:-4])[s[-4]+s[-2:]=="-ay"]

Usa um operador do tipo ternário.

-13 bytes graças a officialaimm e uma atualização nas regras.

-3 Operador ternário alterado. Consulte https://stackoverflow.com/a/470376/3210045 .


1
s[0:len(s)-4]pode ser substituído por apenas s[:-4]. E alguns espaços pode ser evitado apertando ]ife"else
officialaimm


0

Japonês , 18 bytes

A mesma substituição de RegEx que todos os outros, publicada pela primeira vez por Arnauld

r"(.*)-(.)ay""$2$1

Teste-o


Eu tinha q$/-(.)ay/$ w qpor 15, mas infelizmente isso falha em entradas que contêm várias cópias de -<char>ay(corrige todas elas, e não apenas a última). Ah, bem ...
ETHproductions


0

Perl 6 , 22 bytes

{S/(.+)\-(.)ay$/$1$0/}

Solução básica de expressão regular.


0

Python 3 , 59 60 bytes

  • 1 byte adicionado graças a @Erik the Outgolfer: $ para garantir as ig-payyaysaídas iguais e nãoyig-pa
lambda a:a[-3]+a[:-4]if re.search("-.ay$",a)else a
import re

Experimente online!


Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.