そのビスマルクを沈めなさい!(エラー、豚)


8

Pig-latinは、単語の最初の文字を最後に移動し、最後に追加ayすることで翻訳される作り上げの言語です。たとえば、はhelloブタのラテン語に変換されellohayます。したがって、pig-latinを英語に翻訳するayと、末尾のがドロップされ、最後の文字が先頭に移動します(のようoodbyegayにgoodbye)。それを書くときに、一部の人は入れてます-ので、それは、(例えば)を読み取り、わかりやすくするために最初の文字を移動する前に、最後にello-hay代わりのellohayためhello。このチャレンジでは、このハイフン付きのバージョンを使用します。

目的

pig-latin文字列を元に戻します。

指示

1つの引数(文字列の形式の1つの単語)を取るプログラム/関数を記述します。その単語がpig-latinにある場合、プログラム/関数returnはnon-pig-latin単語を出力(つまり、出力)する必要があります。pig-latinでない場合は、単語をそのまま出力します。

この課題の豚のラテン語は次の形式になります。

ello-hay

単語がで終わる場合-*ay、それはpig-latinであり、*は単一のワイルドカード文字です。

文字以外の文字は通常の文字として扱う必要があります。複数のダッシュの場合は、最後を除くすべてを無視します。

例

unpig()デモ用の架空のPython関数の使用。

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

ルール

  1. 標準の抜け穴が適用されます
  2. これはなので、最短のコードが優先されます。
  3. 組み込み関数(特にこの目的のため)は許可されていません。
  4. ヘッダーを使用 # Language, XX bytes

リーダーボード

回答:


5

JavaScript(ES6)、34バイト

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

テストケース


これは機能ですか?JS(ES6)はしません。
— juniorRubyist 2017年

一重引用符の代わりに二重引用符を使用することを除いて、文字通りまったく同じ解決策がありました
— ETHproductions

NVM。素晴らしいスタートです!
— juniorRubyist 2017年

@juniorRubyistこれは、任意の変数(この場合は「unpig」)に割り当てることができる無名関数です。
— officialaimm

かなり無敵のようです。
— スティーブベネット

3

PHP、61バイト

function f($v){echo preg_replace("#(.*)-(.)ay$#","$2$1",$v);}

オンラインでお試しください!

PHP、46バイト

機能なし

<?=preg_replace("#(.*)-(.)ay$#","$2$1",$argn);

オンラインでお試しください!


関数でなければなりません。無効。
— CalculatorFeline

@CalculatorFeline固定
— イェルクHülsermann

実際、22分前に、46バイトのソリューションが有効になりました。
— CalculatorFeline

3

パイソン2、48の 46バイト

-xnorのおかげで2バイト。

これらは、たとえばに割り当てることができる匿名のラムダ関数ですunpig。

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

オンラインでお試しください!

正規表現ソリューション、49バイト

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

オンラインでお試しください!


1
and/or短絡が不要な場合は使用する必要はありません。リストから選択すると機能し、短くなります。
— xnor

2

パイソン2.7、68の 55 52バイト

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

三項のような演算子を使用します。

officialaimmとルールの更新により、-13バイト。

-3変更された三項演算子。https://stackoverflow.com/a/470376/3210045を参照してください。


1
s[0:len(s)-4]だけで置き換えることができますs[:-4]。そして、いくつかのスペースを圧迫することで回避することができます]ifと"else
— officialaimm


0

Japt、18バイト

Arnauldによって最初に投稿された、他のすべての人とまったく同じRegExの置き換え

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

試して


私はq$/-(.)ay/$ w q15でしたが、残念ながら、複数のコピーを含む入力で失敗しました-<char>ay(最後のコピーだけでなく、すべてを修正します)。まあ...
— ETHproductions 2017年




弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.