Übersetzen Englisch zu Corpus

14

Die Corpus sind eine fiktive Fraktion aus dem beliebten Videospiel Warframe , die eine etwas interessante Sprache haben.

Während andere Fraktionen im Spiel, wie der Grineer, eine gewisse Logik hinter ihrer Sprache haben, ist der Corpus einfach ein verlustreicher Ersatz für die englische Sprache.

Alle Corpus-Wörter sind mit den englischen Wörtern identisch, mit Ausnahme der folgenden alphabetischen Zuordnungen:

Englisch zu Corpus Mapping

Dies verursacht einige Probleme bei der Aussprache als:

yeswird yey
saywird yay
yaywird yay
sassywird yayyy
casewirdyaye

Hier ist eine Textversion der Zuordnungen:

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

Die Herausforderung

Geben Sie den Text mit dem englischen Alphabet aus und geben Sie die Corpus-Übersetzung aus.

Zum Beispiel kann der Text Hello, World!wird Keppo, Jotpp!in Corpus

Die Regeln

  • Die Eingabe besteht nur aus druckbaren ASCII-Zeichen
  • Eingabetext kann Leerzeichen und Interpunktion enthalten, diese müssen erhalten bleiben
  • Die Großschreibung von Buchstaben muss erhalten bleiben
  • Das ist also gewinnen natürlich die wenigsten Bytes!

Die Testfälle

Testfälle werden <===========>mit einem Leerzeichen zwischen Eingabe und erwarteter Ausgabe getrennt

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.

Der Bonus

Wenn Sie auch eine Audioaufnahme (oder ein Video mit Audio) von Ihnen einschließen, in der jede der Corpus-Übersetzungen des Testfalls ausgesprochen wird, können Sie Ihr Bytecount 1als Belohnung mit multiplizieren .

Skidsdev
quelle
@ Shaggy Sicher, sollte ich daran denken
Skidsdev
4
@RobertS. Es gibt auch keinen Bonus für Ihre Punktzahl ( x * 1 == x). Es ist ein Augenzwinkernder Scherz über die Unaussprechlichkeit vieler Übersetzungen
Skidsdev,
1
Kann die Ausgabe ein Array von Zeichen sein?
ElPedro
@Skidsdev Die "Übersetzungen" sind aussprechbar; entweder als aufgezeichnete menschliche Stimme oder programmatisch unter Verwendung von maschinellem Lernen und / oder Text-zu-Sprache-Technologien.
guest271314
1
Und so wurde die finnische Sprache geboren!
Sergiol

Antworten:

4

05AB1E , 24 Byte

ži.•ÜÁ©;«ìñä°ÔG·ÖYΘ•Du«‡

Erläuterung:

                       ‡   transliterate
ži                         a-zA-Z with
  .•ÜÁ©;«ìñä°ÔG·ÖYΘ•       atypetjkitkpstokrtyputjkyb
                    Du«    concatenated with itself, uppercased

Probieren Sie es online!

Okx
quelle
Minimale 24-Byte-Alternative durch Transliteration nur der Konsonanten.
Kevin Cruijssen
4

Holzkohle , 42 Bytes

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

Probieren Sie es online! Link ist eine ausführliche Version des Codes. Erläuterung:

≔                       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
Neil
quelle
4

T-SQL, 107 Bytes

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

Zeilenumbruch und Einzug dienen nur der Lesbarkeit.

Verwendet die SQL 2017-Funktion TRANSLATEzum Ersetzen von Zeichen.

Leider musste (fast) das gesamte Alphabet zweimal dort hineingesteckt werden , um die Gehäuse zu erhalten. Es gibt wahrscheinlich bessere Möglichkeiten, vielleicht etwas, das das t behandelt als Gruppe umgeht, aber das hat bei mir funktioniert.

Die Eingabe erfolgt über eine bereits vorhandene Tabelle t mit Varchar - Spalte v , je unseren IO Regeln .

In diesem Fall muss die Tabelle mit einer Sortierung erstellt werden, bei der zwischen Groß- und Kleinschreibung unterschieden wird , entweder indem sie auf einem Server mit Groß- und Kleinschreibung ausgeführt wird, oder indem das COLLATESchlüsselwort verwendet wird (das nicht zur Gesamtsumme der Zeichen gezählt wird):

CREATE TABLE t(v varchar(999) COLLATE Latin1_General_CS_AS)
BradC
quelle
3

JavaScript (Node.js) , 100 Byte

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

Probieren Sie es online!

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()
Arnauld
quelle
3

R , 79 Bytes

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

Probieren Sie es online!

Nur 3 Bytes kürzer als das gleichzeitige Eingeben von Ersetzungszeichenfolgen in Klein- und Großbuchstaben ...

R , 79 Bytes

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

Probieren Sie es online!

Fancier Code, gleiche Byteanzahl.

Kirill L.
quelle
2

J , 78 61 Bytes

-17 Bytes dank FrownyFrog!

rplc(u:,98 66+/i.25);"0(,toupper)@'typetjkitkpstokrtyputjkyb'

Probieren Sie es online!

Galen Ivanov
quelle
2
61
FrownyFrog
@FrownyFrog Danke! In meinem J804 kann ich keine Konstanten auf der rechten Seite verwenden. Ich muss upgraden :) Meine Lösung ist trotzdem hässlich ....
Galen Ivanov
2

C # (Visual C # Interactive Compiler) , 151 83 Byte

n=>n.Select(a=>char.IsLetter(a)?(char)(" ATYPETJKITKPSTOKRTYPUTJKYB"[a%32]|a&32):a)

Probieren Sie es online!

Dank Pietu1998 konnten satte 68 Bytes gespart werden!

Verkörperung der Ignoranz
quelle
Sie können dies auf 83 Bytes reduzieren, indem Sie den Bereich entfernen, das Selects kombinieren und bitweise Operatoren für die Gehäuse verwenden.
PurkkaKoodari
Vielen Dank! Netter Trick mit den etwas klugen Operatoren!
Verkörperung der Ignoranz
2

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

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

Probieren Sie es online!

{ } Funktion mit Argument x

_ in Kleinbuchstaben

a: zuweisen a

!128 Die Liste 0 1 2 ... 127

@[!128; Indizes ;:; Werte ] es ändern , indem die Elemente zu ersetzen Indizes mit den gegebenen Werten

98+!25die Liste, 98 99 100 ... 122die die ASCII-Codes für "bcd...z"

Die Gegenüberstellung ist eine Indizierung, daher verwenden wir a(implizit in Ganzzahlen konvertiert) als Indizes in der geänderten Liste

x-a-subtrahieren von a, dann subtrahieren Form x; Dadurch wird Groß- / Kleinschreibung wie in der ursprünglichen Zeichenfolge wiederhergestellt

`c$ in Zeichen konvertieren

ngn
quelle
1

Retina 0.8.2 , 59 Bytes

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

Probieren Sie es online! Link enthält Testfälle. Erläuterung:

[a-z]
 $&

Stellen Sie jedem Buchstaben ein Nicht-ASCII-Zeichen voran. (Ich habe versucht, ein nicht unterbrechendes Leerzeichen zu verwenden, aber Firefox hat es nach dem Kopieren und Einfügen möglicherweise wieder in ein normales Leerzeichen geändert.)

T`l`L

Versehen Sie alle Buchstaben mit Großbuchstaben.

T`L`ATYP\ETJKITKPST\OKRTYPUTJKYB

Konvertieren Sie die Buchstaben in Corpus.

T`L `l_` .

Kleinschreibung der Buchstaben nach dem Nicht-ASCII-Zeichen und Löschen des Nicht-ASCII-Zeichens.

Naive Lösung ist 63 Bytes:

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

Probieren Sie es online! Link enthält Testfälle.

Neil
quelle
1

Python 2 , 115 Bytes

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

Probieren Sie es online!

Angepasst an die Antwort von @ ElPedro. Dies erzeugt den Ersatz für jedes ASCII-Zeichen im Arraya und anschließend verwendet str.translate.

Kann auf 113 Bytes gebracht werden, wenn die Rückgabe eines Arrays von Zeichen akzeptabel ist:

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

Probieren Sie es online!

Schwarze Eule Kai
quelle
Um diese Zeit musste ich nachdenken, wie es ging. Es war ein langer Tag! Gute Lösung.
ElPedro
1

Japt , 37 Bytes

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

Probieren Sie es online!

Der obige Link enthält die meisten Testfälle, aber ich konnte den vorletzten nicht als Zeichenfolge eingeben, da er sowohl einfache als auch doppelte Anführungszeichen enthält. Hier ist der Testfall, der stattdessen als Array von Zeichen eingegeben wird.

Erläuterung:

;                                        #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)
Kamil Drakari
quelle
0

Python 2 , 138 132 Bytes

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)

Probieren Sie es online!

Eigentlich kürzer mit einer benannten Funktion als mit einem Lambda!

Lambda-Version, 138 Bytes

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

Probieren Sie es online!

131 125 wenn wir ein Array von Zeichen zurückgeben dürfen und dasjoinaußerhalb der Funktion haben.

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]

Probieren Sie es online!

ElPedro
quelle
1
Sie können immer noch ein Lambda verwenden, wenn Sie aund bglobale Variablen
Black Owl Kai
@BlackOwlKai - Danke. Ich habe mit dieser Idee gespielt, aber es wird spät. Vielleicht morgen :)
ElPedro
Habe es auf 120/113 Zeichen gebracht (TIO ohne die Testfälle, sonst wäre der Link zu lang für einen Kommentar)
Black Owl Kai
Beats Mine und anders genug, dass Sie als Ihre eigene Antwort posten können. Ich werde upvote :)
ElPedro
Gerne können Sie auch meine Testfälle stehlen. Die
Eingabe
0

PHP , 100 Bytes

Code

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

Probieren Sie es online!

Erläuterung

# 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.
Francisco Hahn
quelle
0

Pyth, 35 Bytes

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

Versuch es!

Könnte wahrscheinlich die linke Karte oder etwas verwenden, um die beiden D's loszuwerden, aber ich konnte nicht herausfinden, wie.

KarlKastor
quelle
0

Java, 211 Bytes

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));};

Probieren Sie es online!

Hypino
quelle
191 Bytes
Ceilingcat
0

Pyth, 34 Zeichen

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

Probieren Sie es online!

Die Zeichenfolge ist eine komprimierte Version von "typetjkitkpstokrtyputjkyb" . Aus irgendeinem Grund kann ich Pyth nicht zum Komprimieren bringen "atypetjkitkpstokrtyputjkyb" mit der Funktion

+++ \. N ++ hSzeSzCi-RChSzCMz-hCeSzChSzN
obwohl es wahrscheinlich ein oder zwei Bytes sparen würde, da die zwei t's beseitigt werden könnten.

Lucas Bertocchini
quelle
0

Tcl , 114 Bytes

proc C s {string map [split {btcydpftgjhkjtlpmsntpkqrrtsytpvtwjxkzbBTCYDPFTGJHKJTLPMSNTPKQRRTSYTPVTWJXKZB} ""] $s}

Probieren Sie es online!

Sergiol
quelle
0

Lua , 153 Bytes

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

Probieren Sie es online!

Visckmart
quelle