Tenggelamkan Bismark itu! (Errr, babi)


8

Babi-latin adalah bahasa yang dibuat-buat yang diterjemahkan ke dalam dengan memindahkan huruf pertama kata ke akhir dan menambahkan ayke akhir. Sebagai contoh: helloditerjemahkan ke dalam babi-latin sebagai ellohay. Oleh karena itu, menerjemahkan pig-latin kembali ke dalam bahasa Inggris berarti aymenghilangkan huruf di bagian akhir dan memindahkan huruf terakhir ke awal (seperti oodbyegayke goodbye). Saat menuliskannya, beberapa orang akan meletakkan -di bagian akhir sebelum memindahkan huruf pertama untuk kejelasan, jadi bunyinya (misalnya) ello-haybukan ellohayuntuk hello. Kami akan menggunakan versi ditulis dgn tanda penghubung untuk tantangan ini.

Objektif

Membatalkan string babi-latin.

Instruksi

Tulis program / fungsi yang mengambil satu argumen, satu kata dalam bentuk string. Jika kata itu dalam pig-latin, program / fungsi harus menampilkan (yaitu returnatau mencetaknya) kata non-babi-latin. Jika bukan babi-latin, tampilkan kata apa adanya.

Babi-latin untuk tantangan ini akan dalam format berikut:

ello-hay

Jika kata berakhir -*ay, itu adalah babi-latin, di mana itu *adalah karakter wildcard tunggal.

Karakter non-huruf harus diperlakukan sebagai huruf normal. Untuk beberapa tanda hubung, abaikan semua kecuali yang terakhir.

Contohnya

Menggunakan unpig()fungsi Python fiktif untuk 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

Aturan

  1. Celah standar berlaku
  2. Ini , jadi kode terpendek menang.
  3. Fungsi bawaan (khusus untuk tujuan ini) tidak diizinkan.
  4. Gunakan tajuk # Language, XX bytes

Papan peringkat

Jawaban:


5

JavaScript (ES6), 34 byte

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

Uji kasus


Apakah ini suatu fungsi? Saya tidak melakukan JS (ES6).
juniorRubyist

Saya benar-benar memiliki solusi yang sama persis, kecuali menggunakan tanda kutip ganda dan bukan tanda kutip tunggal
ETHproduk

Nvm. Awal yang bagus!
juniorRubyist

@juniorRubyist Ini adalah fungsi anonim yang dapat ditugaskan ke variabel apa pun (dalam hal ini 'unpig').
officialaimm

Tampaknya cukup tak terkalahkan.
Steve Bennett


3

Python 2 , 48 46 byte

-2 byte terima kasih kepada xnor.

Ini adalah fungsi lambda anonim yang dapat ditugaskan, katakanlah unpig.

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

Cobalah online!

Solusi Regex, 49 byte

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

Cobalah online!


1
Anda tidak perlu menggunakan and/orsaat hubungan arus pendek tidak diperlukan. Memilih dari daftar berfungsi dan lebih pendek.
xnor

2

Python 2.7, 68 55 52 byte

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

Menggunakan operator seperti terner.

-13 bytes berkat officialaimm dan pembaruan dalam aturan.

-3 Operator ternary yang diubah. Lihat https://stackoverflow.com/a/470376/3210045 .


1
s[0:len(s)-4]bisa diganti dengan adil s[:-4]. Dan beberapa ruang dapat dihindari dengan memeras ]ifdan"else
officialaimm


0

Japt , 18 byte

Hanya penggantian RegEx yang sama seperti orang lain, pertama kali diposting oleh Arnauld

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

Menguji


Saya punya q$/-(.)ay/$ w qselama 15 tetapi sayangnya itu gagal pada input yang berisi banyak salinan -<char>ay(itu mengoreksi mereka semua, bukan hanya yang terakhir). Oh well ...
ETHproduksi


0

Perl 6 , 22 byte

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

Solusi ekspresi reguler dasar.


0

Python 3 , 59 60 byte

  • 1 byte ditambahkan berkat @Erik the Outgolfer: $ untuk memastikan ig-payyayoutput yang sama dan tidakyig-pa
lambda a:a[-3]+a[:-4]if re.search("-.ay$",a)else a
import re

Cobalah online!


Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.