日本のマリオのタイトルをアメリカのタイトルに変換する


16

スーパーマリオシリーズのゲームの命名規則は非常に奇妙であり、地域間で一致していません。

| Japanese Name       | American Name                      |
|---------------------|------------------------------------|
| Super Mario Bros.   | Super Mario Bros.                  |
| Super Mario Bros. 2 | Super Mario Bros.: The Lost Levels |
| Super Mario USA     | Super Mario Bros. 2                |
| Super Mario Bros. 3 | Super Mario Bros. 3                |
| Super Mario Bros. 4 | Super Mario World                  |

なんてこった!


チャレンジ:

スーパーマリオゲームの日本語名で構成される文字列を指定すると、対応するアメリカ名が出力されます。妥当な方法で日本語の文字列を入力し、妥当な方法でアメリカの文字列(オプションの改行を含む)を出力できます。

上記の正確な文字列を使用する必要があります。標準的な抜け穴は禁止されています!

最短のコード(バイト単位)が勝者です。


1

1
しかし、スーパーマリオブラザーズ2の日本の名前はドキドキパニックだと思いました。それとも、マリオスキンを使用して同じゲームを日本で再リリースしましたか?
シャッフルパンツ

@Shufflepants IIRC、はい、彼らはマリオスキンで「スーパーマリオUSA」として再リリースしました。
ポケチュウ22

1
入力は正確な日本語名であると仮定できますか?
-stevefestl

1
@SteveFestはい。
ジュリアンラクニエット

回答:




6

JavaScript(ES6)、82 81バイト

s=>s.replace(/ 2|o.*4|USA/,(_,i)=>['Bros. 2',': The Lost Levels','o World'][i&3])

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

どうやって?

Pattern | Found in              | Position in string | Position MOD 4 | Replaced with
--------+-----------------------+--------------------+----------------+--------------------
/ 2/    | "Super Mario Bros. 2" |                 17 |              1 | ": The Lost Levels"
/o.*4/  | "Super Mario Bros. 4" |                 10 |              2 | "o World"
/USA/   | "Super Mario USA"     |                 12 |              0 | "Bros. 2"

2
今では賢い。
-darrylyeo


3

JavaScript(ES6)、84バイト

s=>s[r='replace'](' 2',': The Lost Levels')[r]('USA',(b='Bros. ')+2)[r](b+4,'World')


2
[r='replace']トリックのために+1 。
アルジュン

私はJSをあまり知りません... []関数として仕事をどのように使用しますか?
完全に人間の

3
@totallyhuman 1)JSオブジェクトのプロパティは、これらの2つの構文のいずれかでアクセスすることができる:object.propertyまたはobject['property']。2)オブジェクトのメソッドは、機能が割り当てられたプロパティです。3)内部では、プロパティアクセス構文が使用されると、JSは文字列などのプリミティブ型をオブジェクトに短時間変換します。結論:上記のすべてを組み合わせることによりs['replace']()、錫で言うことを正確に行う理由を理解できます。
アーナウド


2

Japt、48バイト

d" 2"`: T” Lo¡ Levels`"USA"`Bžs. 2``Bžs. 4``WŽld

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

説明:

 d" 2"`: T” Lo¡ Levels`"USA"`Bžs. 2``Bžs. 4``WŽld

U                                //  Implicit U = Input
 d                               //  Replace:
   " 2"                          //    " 2" with
       `...`                     //    ": The Lost Levels" decompressed,
            "USA"                //    "USA" with
                 '...'           //    "Bros. 2" decompressed,
                      '...'      //    "Bros. 4" decompressed with
                           '...' //    "World" decompressed

Japtは、文字列の圧縮にshocoライブラリを使用します。バックティックは、文字列を圧縮解除するために使用されます。



1

ゼリー 44  43 バイト

⁹
HḂ+2⁹Ḳ¤ḣK;⁸ị“¥ḄḞ“ḋṗYP8ḷẇ?Ṅ“¡Ạ ṙṗ%»¤
0ịVĊŀ

結果を出力する完全なプログラム。

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

どうやって?

⁹ - Link 1: yield right argument: number a, list of characters b
⁹ - link's right argument, b

HḂ+2⁹Ḳ¤ḣK;⁸ị“¥ḄḞ“ḋṗYP8ḷẇ?Ṅ“¡Ạ ṙṗ%»¤ - Link 0: change a name: number a, list of characters b
                   ...Note: at this point a will be 0, 2 or 4 for USA, 2 and 4 respectively
H                                   - halve a (0,1, or 2)
 Ḃ                                  - mod 2   (0,1, or 0)
  +2                                - add 2   (2,3, or 2)
      ¤                             - nilad followed by link(s) as a nilad:
    ⁹                               -   link's right argument, b
     Ḳ                              -   split at spaces
       ḣ                            - head (first two for USA or 4, first three for 2)
        K                           - join with spaces
                                  ¤ - nilad followed by link(s) as a nilad:
          ⁸                         -   link's left argument a
            “¥ḄḞ“ḋṗYP8ḷẇ?Ṅ“¡Ạ ṙṗ%»  -   list of dictionary/string compresions:
                                    -     [" World",": The Lost Levels"," Bros. 2"]
           ị                        - index into (1-based & modular; respectively [4,2,0])

0ịVĊŀ - Main link: list of characters, J
0ị    - index 0 into J - gets the last character '.', '2', 'A', '3', or '4'
  V   - evaluate as Jelly code - the evaluations are:
      -     "Super Mario Bros." :  . - literal 0.5
      -   "Super Mario Bros. 2" :  2 - literal 2
      -       "Super Mario USA" :  A - absolute value (default argument is 0) = 0
      -   "Super Mario Bros. 3" :  3 - literal 3
      -   "Super Mario Bros. 4" :  4 - literal 4
   Ċ  - ceiling - changes a 0.5 to 1 and leaves others as they were
    ŀ - call link at that index as a dyad (left = the evaluation, right = J)
      -   this is one based and modular so 1 & 3 go to Link 1, while 0, 2 & 4 go to Link 0.

3
「取り消し線44は正常44」に対する素晴らしい回避策です。
wizzwizz4

1

Mathematica、80バイト

#~StringReplace~{" 2"->": The Lost Levels","USA"->"Bros. 2","Bros. 4"->"World"}&

匿名関数。入力として文字列を受け取り、出力として文字列を返します。


1

Python 3:111バイト

from re import sub as r
print(r(" USA","Bros. 2",r(" 2",": The Lost Levels",r("Bros. 4","World",input()))))

ユーザー入力を取得し、一連の正規表現ベースの置換を実行し、結果を出力します。


サイトへようこそ!のfrom re import*代わりに行うと短いと思いますfrom re import sub as r。そして、2行目はなる:print(sub(" USA","Bros. 2",sub(" 2",": The Lost Levels",sub("Bros. 4","World",input()))))
DJMcMayhem

ああ、素晴らしい。ありがとうございました!
Struan Duncan-Wilson


0

バッチ、237 99バイト

入力が質問の正確な形式であると仮定します

@set s=%*
@set s=%s: 2=: The Lost Levels%
@set s=%s:USA=Bros. 2%
@set s=%s:Bros. 4=World%
@echo %s%

0

パスカル(FPC)184182バイト

const s='Super Mario ';b='Bros.';m=s+b;var t:string;z:array[0..4]of string=(m+' 2',m+' 3',m,s+'World',m+': The Lost Levels');begin read(t);write(z[(length(t)+ord(t[19])*2)mod 5])end.

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

説明:

z5つの可能な出力を保持する配列です。インデックスを作成する方法を見つける必要があります。入力を区別するために使用できる2つのパラメーターに気付きました。最初の部分は入力の長さです:

Super Mario Bros.   -> 17
Super Mario Bros. 2 -> 19
Super Mario USA     -> 15
Super Mario Bros. 3 -> 19
Super Mario Bros. 4 -> 19

唯一の3入力は、同じ長さの入力位置19において、前記第2の部分がそれであると国防省有し23そして4それらは容易に残りの2つの入力であるが、インデックスの残りの部分を記入するために使用することができるように、連続するコードポイントを有します短く。

StringタイプのデフォルトShortString、安全に使用できるように、デフォルトでは、255文字のための能力、すべてゼロで初期化さを持っているt[19]すべての文字列で、そのコードポイントは、短い文字列の0で、インデックス作成のために何を変更していないので、短い文字列のインデックスが0であり、 2.したがって、我々はからインデックス1、3と4を必要とする234

  | Codepoint |  *2 | +19 | mod 5
2 |        50 | 100 | 119 | 4
3 |        51 | 102 | 121 | 1
4 |        52 | 104 | 123 | 3

0

05AB1E、37 バイト

l„ 2“:€€‹×Œä“:'„À"bros. 2"©:®Y4:'‚ï:™

オンラインそれを試してみたり、すべてのテストケースを確認してください。

説明:

l                  # Convert the input to lowercase
 „ 2         :     # Replace " 2" with:
    “:€€‹×Œä“      #  ": the lost levels"
 '„À          :    # Then replace "usa" with:
    "bros. 2"      #  "bros. 2"
             ©     # And store the string "bros. 2" in the register
 ®                 # Retrieve "bros. 2" from the register,
  Y4:              # and replace its "2" with "4"
        :          # Then replace "bros. 4" with:
     '‚ï           #  "world"
™                  # Convert the result to title-case (and output implicitly)

理由の詳細について“:€€‹×Œä“": the lower levels"、これを参照してください。'„Àです"usa"。と'‚ïです"world"

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