Corpus 'a İngilizce tercüme


14

Corpus popüler video oyunundan kurgusal hizip vardır Warframe biraz ilginç dili var.

Oyunda Grineer gibi diğer grupların dillerinin arkasında bir mantık olsa da, Corpus sadece İngilizce'nin kayıplı bir yerine geçer.

Aşağıdaki Corpus kelimeleri, aşağıdaki alfabetik eşlemeler hariç, İngilizce meslektaşları ile aynıdır:

İngilizceden Corpus haritasına

Bu, telaffuzla ilgili bazı sorunlara neden olur:

yesolur yey
sayolur yay
yayolur yay
sassyolur yayyy
caseoluryaye

Eşlemelerin metin versiyonu:

a -> a
b -> t
c -> y
d -> p
e -> e
f -> t
g -> j
h -> k
i -> i
j -> t
k -> k
l -> p
m -> s
n -> t
o -> o
p -> k
q -> r
r -> t
s -> y
t -> p
u -> u
v -> t
w -> j
x -> k
y -> y
z -> b

Meydan okuma

İngilizce alfabe kullanarak metin verilen, Corpus çeviri çıktı.

Örneğin, metin Hello, World!olur Keppo, Jotpp!Corpus içinde

Kurallar

  • Giriş yalnızca ASCII yazdırılabilir karakterlerden oluşacaktır
  • Giriş metni boşluk ve noktalama işareti içerebilir, bunlar korunmalıdır
  • Harflerin büyük yazılması korunmalıdır
  • Bu kadar doğal, en az bayt kazanır!

Testcases

Test senaryoları, <===========>girdi ve beklenen çıktı arasında boş bir çizgi ile ayrılır

Hello, World!

Keppo, Jotpp!
<===========>
Yes

Yey
<===========>
TestcaSe

PeypyaYe
<===========>
Programming Puzzles and Code Golf

Ktojtassitj Kubbpey atp Yope Jopt
<===========>
This text has a
newline in it

Pkiy pekp kay a
tejpite it ip
<===========>
Corpus language best language

Yotkuy patjuaje teyp patjuaje
<===========>
Strip the flesh! Salt the wounds!

Yptik pke tpeyk! Yapp pke joutpy!
<===========>
"Install Warframe" they said, "It'll be fun" they said

"Itypapp Jatttase" pkey yaip, "Ip'pp te tut" pkey yaip
<===========>
What the **** did you just ****ing say about me, you little *****?
I'll have you know I graduated top of my class in the Navy Seals,
and I've been involved in numerous secret raids on Al-Quaeda,
and I have over 300 confirmed kills.

Jkap pke **** pip you tuyp ****itj yay atoup se, you pipppe *****?
I'pp kate you ktoj I jtapuapep pok ot sy ypayy it pke Taty Yeapy,
atp I'te teet ittoptep it tusetouy yeytep taipy ot Ap-Ruaepa,
atp I kate otet 300 yottitsep kippy.

Bonus

Ayrıca, test çantasının Corpus çevirilerinin her birini telaffuz eden bir ses kaydı (veya sesli video) eklerseniz, baytınızı 1ödül olarak çarpabilirsiniz .


@Shaggy Sure, bunu düşündüm
Skidsdev

4
@RobertS. ayrıca puanınıza bonus da sağlamaz ( x * 1 == x). Bu çevirilerin birçoğunun unpronouncability'de yanakta bir dildir
Skidsdev

1
Çıktı bir karakter dizisi olabilir mi?
ElPedro

@Skidsdev "Tercümeler" belirgindir; kaydedilmiş bir insan sesi olarak veya programlı olarak makine öğrenimi ve / veya metinden konuşmaya teknolojilerini kullanarak.
guest271314

1
Ve böylece Fin dili doğdu!
sergiol

Yanıtlar:




4

Kömür , 42 bayt

≔”$⌊∧T-¶I^F⁷ü@n⁹γ›7η”η⭆θ⎇№β↧ι§⎇№βι↧ηη⌕β↧ιι

Çevrimiçi deneyin! Bağlantı, kodun ayrıntılı versiyonudur. Açıklama:

≔                       Assign
 ”$⌊∧T-¶I^F⁷ü@n⁹γ›7η”  Compressed string `ATYPETJKITKPSTOKRTYPUTJKYB` 
                     η  To variable

 θ                      Input string
⭆                       Map over characters and join
  ⎇                     If
    β                   Lowercase alphabet
   №                    Contains
      ι                 Current character
     ↧                  Lowercased
                        (Then)
        ⎇               If
          β             Lowercase alphabet
         №              Contains
           ι            Current character
                        (Then)
             η          Variable
            ↧           Lowercased
                        (Else)
              η         Variable
       §                Indexed by
               ⌕        Index of
                  ι     Current character
                 ↧      Lowercased
                β       In lowercase alphabet
                        (Else)
                   ι    Current character
                        Implicitly print

4

T-SQL, 107 Bayt

SELECT TRANSLATE(v,'bcdfghjlmnpqrstvwxzBCDFGHJLMNPQRSTVWXZ',
                   'typtjktpstkrtyptjkbTYPTJKTPSTKRTYPTJKB')FROM t

Satır kesmesi ve girintisi yalnızca okunabilirlik içindir.

TRANSLATEKarakter değiştirme için SQL 2017 işlevini kullanır .

Ne yazık ki, gövdeyi korumak için tüm alfabeyi iki kez koymak zorunda kaldı . Daha iyi yolları, belki kolları bir şeylerin muhtemelen vardır t 'bir grup olarak s, ancak bu benim için çalıştı.

Girdi önceden var olan bir tablo yoluyladır t varchar sütunu ile v , bizim ES kurallarına göre .

Bu durumda, tablo , büyük / küçük harfe duyarlı bir sunucuda çalışarak veya anahtar kelime kullanılarak (toplam karakter olarak sayılmaz) büyük / küçük harf duyarlı bir harmanlama kullanılarak oluşturulmalıdır COLLATE:

CREATE TABLE t(v varchar(999) COLLATE Latin1_General_CS_AS)

3

JavaScript (Node.js) , 100 bayt

s=>s.replace(/[a-z]/gi,c=>(C='_atypetjkitkpstokrtyputjkyb'[Buffer(c)[0]&31],c>{}?C:C.toUpperCase()))

Çevrimiçi deneyin!

s =>                                  // s = input string
  s.replace(                          // replace in s ...
    /[a-z]/gi,                        // ... all letters, no matter the case
    c => (                            // for each letter c:
      C =                             //   pick a replacement letter C
        '_atypetjkitkpstokrtyputjkyb' //   from a 1-indexed lookup string
        [Buffer(c)[0] & 31],          //   using the 5 lowest bits of the ASCII code of c
      c > {} ?                        //   if the original letter was in lower case:
        C                             //     use the replacement letter as-is
      :                               //   else:
        C.toUpperCase()               //     convert it to upper case
    )                                 // 
  )                                   // end of replace()

3

R , 79 bayt

function(x)chartr("b-zB-Z",paste0(y<-"typetjkitkpstokrtyputjkyb",toupper(y)),x)

Çevrimiçi deneyin!

Hem küçük hem de büyük harf değiştirme dizelerini birlikte yazmaktan sadece 3 bayt daha kısa ...

R , 79 bayt

function(x,`[`=chartr)"B-Z"[toupper(y),"b-z"[y<-"typetjkitkpstokrtyputjkyb",x]]

Çevrimiçi deneyin!

Üretici kodu, aynı bayt sayısı.






2

K (ngn / k) , 87 63 61 60 59 bayt

f:{`c$x-a-@[!128;98+!25;:;0+"typetjkitkpstokrtyputjkyb"]a:_x}

Çevrimiçi deneyin!

{ } argüman ile işlev x

_ küçük harfe

a: atamak a

!128 liste 0 1 2 ... 127

@[!128; endeks ;:; değerleri ] , endekslerdeki elemanları verilen değerlerle değiştirerek değiştirir

98+!25için 98 99 100 ... 122ascii kodları listesi "bcd...z"

yan yana dizine ekleme yapılır, bu nedenle adeğiştirilen listede dizin olarak (dolaylı olarak tamsayılara dönüştürülür) kullanırız

x-a-çıkarma a, daha sonra çıkarma formu x; bu, orijinal dizede olduğu gibi büyük / küçük harfleri geri yükler

`c$ karakterlere dönüştür


1

Retina 0.8.2 , 59 bayt

[a-z]
 $&
T`l`L
T`L`ATYP\ETJKITKPST\OKRTYPUTJKYB
T`L `l_` .

Çevrimiçi deneyin! Bağlantı, test senaryolarını içerir. Açıklama:

[a-z]
 $&

Her harfe ASCII olmayan bir karakter öneki ekleyin. (Kesintisiz bir alan kullanmaya çalıştım, ancak Firefox kopyalayıp yapıştırdıktan sonra tekrar normal bir alana değiştirmiş olabilir.)

T`l`L

Tüm harfleri büyük harfle yazınız.

T`L`ATYP\ETJKITKPST\OKRTYPUTJKYB

Harfleri Corpus'a dönüştürün.

T`L `l_` .

ASCII olmayan karakterden sonra gelen harfleri küçük harflerle yazın ve ASCII olmayan karakteri silin.

Saf çözüm 63 bayttır:

T`lL`aty\petjkitk\pst\okrty\putjkybATYP\ETJKITKPST\OKRTYPUTJKYB

Çevrimiçi deneyin! Bağlantı, test senaryolarını içerir.


1

Python 2 , 115 bayt

lambda i:i.translate(''.join(a))
a=map(chr,range(256))
b='typetjkitkpstokrtyputjkyb'
a[66:91]=b.upper();a[98:123]=b

Çevrimiçi deneyin!

@ ElPedro'nun cevabından uyarlandı. Bu, dizideki her ascii karakterinin yerini alır ave sonra kullanır str.translate.

Bir dizi karakter döndürmek kabul edilebilirse 113 bayta getirilebilir :

lambda i:[a[ord(x)]for x in i]
a=map(chr,range(256))
b='typetjkitkpstokrtyputjkyb'
a[66:91]=b.upper();a[98:123]=b

Çevrimiçi deneyin!


Gecenin bu saatinde nasıl olduğunu anlamak için biraz düşünmeye başladı. Uzun bir gün oldu! Güzel çözüm.
ElPedro


1

Japt , 37 bayt

;®i`…ypetjkŠkp¡okrtyp©jkyb`pu)gCpu bZ

Çevrimiçi deneyin!

Yukarıdaki bağlantı çoğu test durumlarını içerir, ancak hem tek hem de çift tırnak içerdiğinden ikincisini bir dize olarak giremedim. İşte bu test örneği, bunun yerine bir karakter dizisi olarak girin.

Açıklama:

;                                        #Set C to the lowercase alphabet
 ®                                       #For each character Z of the input:
                                   bZ    # Find its index in:
                               C         #  The lowercase alphabet
                                pu       #  Plus the uppercase alphabet
                                         #  (-1 if it is not a letter)
                              g          # And get the character at that index in:
   `…ypetjkŠkp¡okrtyp©jkyb`              #  Get the lowercase Corpus alphabet
                           pu)           #  Plus the uppercase Corpus alphabet
  i                                      #  Add Z at the end (index -1)

0

Python 2 , 138131 bayt

def f(i,a='bcdfghjlmnpqrstvwxz',b='typtjktpstkrtyptjkb'):a+=a.upper();b+=b.upper();return''.join((x,b[a.find(x)])[x in a]for x in i)

Çevrimiçi deneyin!

Aslında adlandırılmış bir işlevle lambdadan daha kısa!

lambda sürümü, 138 bayt

lambda i,a='bcdfghjlmnpqrstvwxzBCDFGHJLMNPQRSTVWXZ',b='typtjktpstkrtyptjkbTYPTJKTPSTKRTYPTJKB':''.join((x,b[a.find(x)])[x in a]for x in i)

Çevrimiçi deneyin!

131 125 bir dizi karakter döndürme vejoindış fonksiyonasahip olmaiznimizvarsa.

def f(i,a='bcdfghjlmnpqrstvwxz',b='typtjktpstkrtyptjkb'):a+=a.upper();b+=b.upper();return[(x,b[a.find(x)])[x in a]for x in i]

Çevrimiçi deneyin!


1
Eğer küresel değişkenler yaparsanız ave yine de lambda kullanabilirsinizb
Black Owl Kai

@BlackOwlKai - Teşekkürler. Bu fikirle oynuyordum ama geç oluyor. Belki yarın :)
ElPedro

İçin aşağı Got 120/113 karakterden (testcases olmadan TIO, başka bağlantısı çok uzun bir yorum için olurdu)
Siyah Baykuş Kai

Kendi cevabınız olarak yayınlayabilmeniz için benimkini ve yeterince farklı atıyor. Ben upvote :)
ElPedro

Test davalarımı da çalmaktan çekinmeyin. Kod
yazmaktan

0

PHP , 100 bayt

kod

<?=strtr($argv[0],($u=bcdfghjklmnpqrstvwxyz).($f=strtoupper)($u),($v=typtjktkpstkrtyptjkyb).$f($v));

Çevrimiçi deneyin!

açıklama

# using the provided character mapping given on the question, as an array
strtr($argv[0],                                  # strtr for the string replacement
($u=bcdfghjklmnpqrstvwxyz).($f=strtoupper)($u),  # Taking onthe the keys for the first string
($v=typtjktkpstkrtyptjkyb).$f($v));              # Using the values for second string
 # In both Strings appending the upper version of each string.

0

Pyth, 35 Bayt

XQ.*m+r1dd[tG."byàHuH¯¹e?rJyfh

Dene!

Muhtemelen iki haritadan kurtulmak için Sol haritayı falan kullanabilirdi, ama nasıl olduğunu anlayamadım.


0

Java, 211 Bayt

a->{String b="BCDFGHJLMNPQRSTVWXZbcdfghjlmnpqrstvwxz",c="TYPTJKTPSTKRTYPTJKBtyptjktpstkrtyptjkb";a.chars().map(x->{int z;return(z=b.indexOf(x))>-1?c.toCharArray()[z]:x;}).forEach(x->System.out.print((char)x));};

Çevrimiçi deneyin!



0

Pyth, 34 karakter

J. "byàHuH¯¹e? RJyfh" XXztGJrtG1rJ1

Çevrimiçi deneyin!

Dize "typetjkitkpstokrtyputjkyb" sıkıştırılmış bir sürümüdür . Nedense Pyth işlevini "atypetjkitkpstokrtyputjkyb" sıkıştırmak için alamıyorum

+++ \., N ++ hSzeSzCi-RChSzCMz-hCeSzChSzN
iki t ortadan kaldırılabileceği için muhtemelen bir veya iki bayt tasarruf etmesine rağmen.



0

Lua , 153 bayt

t="atypetjkitkpstokrtyputjkyb"for c in(...):gmatch"."do i=c:lower():byte()-96n=t:sub(i,i)io.write((i<0or i>26)and c or(c==c:upper()and n:upper()or n))end

Çevrimiçi deneyin!

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.