Hundir ese Bismark! (Errr, cerdo)


8

Pig-latin es un lenguaje inventado que se traduce al mover la primera letra de una palabra al final y agregarla ayal final. Por ejemplo: se hellotraduce en latín porcino como ellohay. Por lo tanto, traducir pig-latin nuevamente al inglés es soltar el ayfinal y mover la última letra al inicio (like oodbyegayto goodbye). Al escribirlo, algunas personas pondrán un -al final antes de mover la primera letra para mayor claridad, por lo que se lee (por ejemplo) en ello-haylugar de ellohaypara hello. Utilizaremos esta versión con guiones para este desafío.

Objetivo

Deshacer una cuerda de cerdo latino.

Instrucciones

Escriba un programa / función que tome un argumento, una sola palabra en forma de cadena. Si esa palabra está en latín, el programa / función debe generar (es decir, returno imprimirla) la palabra no latina. Si no es pig-latin, escriba la palabra como está.

Pig-latin para este desafío tendrá el siguiente formato:

ello-hay

Si la palabra termina en -*ay, es pig-latin, donde *es un carácter comodín único.

Los caracteres que no son letras deben tratarse como una letra normal. Para guiones múltiples, ignore todos excepto el último.

Ejemplos

Uso de la unpig()función ficticia de Python para la demostración.

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

Reglas

  1. Se aplican lagunas estándar
  2. Este es el , por lo que gana el código más corto.
  3. Las funciones integradas (específicamente para este propósito) no están permitidas.
  4. Usar encabezado # Language, XX bytes

Tabla de clasificación

Respuestas:


5

JavaScript (ES6), 34 bytes

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

Casos de prueba


¿Es esta una función? No hago JS (ES6).
juniorRubyist

Literalmente tuve exactamente la misma solución, excepto el uso de comillas dobles en lugar de comillas simples
ETHproductions

Nvm. ¡Gran comienzo!
juniorRubyist

@juniorRubyist Es una función anónima que se puede asignar a cualquier variable (en este caso, 'unpig').
officialaimm

Parece bastante inmejorable.
Steve Bennett


3

Python 2 , 48 46 bytes

-2 bytes gracias a xnor.

Estas son funciones lambda anónimas que se pueden asignar a, digamos unpig .

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

Pruébalo en línea!

Solución de expresiones regulares, 49 bytes

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

Pruébalo en línea!


1
No necesita usarlo and/orcuando no se requiere un cortocircuito. Seleccionar de una lista funciona y es más corto.
xnor

2

Python 2.7, 68 55 52 bytes

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

Utiliza un operador tipo ternario.

-13 bytes gracias a officialaimm y una actualización en las reglas.

-3 Operador ternario modificado. Ver https://stackoverflow.com/a/470376/3210045 .


1
s[0:len(s)-4]puede ser sustituido por solo s[:-4]. Y pocos espacios se pueden evitar apretando ]ify"else
officialaimm


0

Japt , 18 bytes

El mismo reemplazo de RegEx que todos los demás, publicado por primera vez por Arnauld

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

Pruébalo


Tenía q$/-(.)ay/$ w q15 pero desafortunadamente eso falla en las entradas que contienen múltiples copias de -<char>ay(las corrige a todas en lugar de solo la última). Oh, bueno ...
ETHproductions


0

Perl 6 , 22 bytes

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

Solución básica de expresión regular.


0

Python 3 , 59 60 bytes

  • 1 byte agregado gracias a @Erik the Outgolfer: $ para garantizar que las ig-payyaysalidas sean las mismas y noyig-pa
lambda a:a[-3]+a[:-4]if re.search("-.ay$",a)else a
import re

Pruébalo en línea!


Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.