Versenke das Bismark! (Errr, Schwein)


8

Schweinelatein ist eine erfundene Sprache, in die übersetzt wird, indem der erste Buchstabe eines Wortes an das Ende verschoben ayund am Ende hinzugefügt wird . Zum Beispiel: helloübersetzt in Schweinelatein als ellohay. Wenn Sie also Schweinelatein wieder ins Englische übersetzen, wird das ayam Ende gelöscht und der letzte Buchstabe an den Anfang verschoben (wie oodbyegaybei goodbye). Beim Schreiben schreiben einige Leute ein -Ende, bevor sie den ersten Buchstaben aus Gründen der Klarheit verschieben, sodass er (zum Beispiel) ello-haystatt ellohayfür lautet hello. Wir werden diese Version mit Bindestrich für diese Herausforderung verwenden.

Zielsetzung

Löse eine Schweinelateinschnur.

Anleitung

Schreiben Sie ein Programm / eine Funktion mit einem Argument, einem einzelnen Wort in Form einer Zeichenfolge. Wenn dieses Wort in Schweinelatein ist, muss das Programm / die Funktion returndas Nichtschweinlateinwort ausgeben (dh drucken). Wenn es kein Schweinelatein ist, geben Sie das Wort unverändert aus.

Schweinelatein für diese Herausforderung wird im folgenden Format vorliegen:

ello-hay

Wenn das Wort endet -*ay, ist es Schweinelatein, wobei das *ein einzelnes Platzhalterzeichen ist.

Nicht-Buchstaben-Zeichen sollten wie normale Buchstaben behandelt werden. Ignorieren Sie bei mehreren Strichen alle außer den letzten.

Beispiele

Verwendung der fiktiven unpig()Python-Funktion für die Demo.

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

Regeln

  1. Es gelten Standardlücken
  2. Dies ist , also gewinnt der kürzeste Code.
  3. Eingebaute Funktionen (speziell für diesen Zweck) sind nicht zulässig.
  4. Header verwenden # Language, XX bytes

Bestenliste

Antworten:


5

JavaScript (ES6), 34 Byte

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

Testfälle


Ist das eine Funktion? Ich mache kein JS (ES6).
juniorRubyist

Ich hatte buchstäblich genau die gleiche Lösung, außer doppelte Anführungszeichen anstelle von einfachen Anführungszeichen zu verwenden
ETHproductions

Nvm. Toller Start!
juniorRubyist

@juniorRubyist Es ist eine anonyme Funktion, die jeder Variablen zugewiesen werden kann (in diesem Fall 'unpig').
Officialaimm

Scheint ziemlich unschlagbar.
Steve Bennett


3

Python 2 , 48 46 Bytes

-2 Bytes dank xnor.

Dies sind anonyme Lambda-Funktionen, die beispielsweise zugewiesen werden können unpig.

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

Probieren Sie es online aus!

Regex-Lösung, 49 Bytes

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

Probieren Sie es online aus!


1
Sie müssen nicht verwenden, and/orwenn kein Kurzschluss erforderlich ist. Die Auswahl aus einer Liste funktioniert und ist kürzer.
xnor

2

Python 2.7, 68 55 52 Bytes

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

Verwendet einen ternären Operator.

-13 Bytes dank Officialaimm und einer Aktualisierung der Regeln.

-3 Geänderter ternärer Operator. Siehe https://stackoverflow.com/a/470376/3210045 .


1
s[0:len(s)-4]kann durch nur ersetzt werden s[:-4]. Und wenige Leerzeichen können durch Drücken ]ifund"else
offiziell am


0

Japt , 18 Bytes

Genau der gleiche RegEx-Ersatz wie alle anderen, zuerst veröffentlicht von Arnauld

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

Probier es aus


Ich hatte q$/-(.)ay/$ w qfür 15, aber leider schlägt das bei Eingaben fehl, die mehrere Kopien von enthalten -<char>ay(es korrigiert sie alle und nicht nur die letzten). Na
ja


0

Perl 6 , 22 Bytes

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

Grundlegende Lösung für reguläre Ausdrücke.



Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.