テコンドーは好きですか?


9

チェ・ホン・ヒは2002年6月15日に名誉ある83歳で亡くなりました。彼はテコンドーを設立しました。

彼の死から15年後、私はテコンドーのマスターになりたいです。今こそ輝く時です!

仕事

文字列を指定すると、テコンドーバージョンを出力する必要があります。

ルール

  • 有効な入力により、空でない文字列/文を受け取ります
  • 各タイトル(大文字と小文字は区別されません)は、改訂されたローマ字表記に置き換える必要があります。
  • , *side kick*私はサイドキックをするのが好きなので、文の最後に追加する必要があります。
  • この変更された文を文字列として出力する必要があります。
  • これは、答えのバイト数を最小限に抑えることを目的としたです

"I am a Student and I do Taekwondo twice a week" 
  => "I am a Geup and I do Taekwondo twice a week, *side kick*"

"I am a Teacher willing to be a President" 
  => "I am a Gyosa nim willing to be a Gwanjang nim, *side kick*"

タイトル一覧

English             =>  Revised Romanization
============================================
President           =>  Gwanjang nim
Founder             =>  Gwanjang nim
Master instructor   =>  Sabeom nim
Teacher             =>  Gyosa nim
Black Belt          =>  Dan
Student             =>  Geup
Color Belt          =>  Geup
Master level        =>  Godanja

1
大文字小文字を区別しません?以前に必要だったスペースです*side kick*
LiefdeWen 2017年

10
@LiefdeWenスペースが明らかに必要です。どうすればside kick対戦相手との間にスペースを空けることができますか?
Weedoze 2017年

1
私は韓国人として、この挑戦​​に賛成します。しかし、私はGeup(급)が本当に「学生」を意味するのではないことを言わなければなりません。Haksaeng(학생)より良いでしょう。また、武術のインストラクターについては、習熟度に関係Sabeom nimなく、Gyosa nim(교사님 )ではなく(사범님)を使用します((교범님)という単語はGyobeom nim存在しますが、ほとんど使用されません)。
JungHwan Min 2017

2
side kick違いますside-kick
セルジオル2017年

1
@sergiol質問が更新されました
Weedoze

回答:



3

PHP、241バイト

<?=preg_replace(["#\b(President|Founder)\b#i","#\bMaster instructor\b#i","#\bTeacher\b#i","#\bBlack Belt\b#i","#\b(Studen|Color Bel)t\b#i","#\bMaster level\b#i"],[Gwanjang.$n=" nim",Sabeom.$n,Gyosa.$n,Dan,Geup,Godanja],"$argn, *side-kick*");

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


1
私が数えると、それはで短くなりstr_ireplace()ます。
manatwork 2017年

「この変更された文を文字列として出力する必要があります。」が不明確 実際には意味しますが、サイドキックは常に追加する必要があるため、文は常に変化するので、常に何かが出力されるはずです。たとえば、「Me coder、no Taekwondo」のような入力の場合。
manatwork 2017年

@manatwork有効な入力と言えます。有効な入力の下では、タイトル付きの入力を想定しています。あなたのカウントがstr_ireplace正しかった
イェルクHülsermann

1
変数に値するのに十分な「nim」があるようです:[$a=Gwanjang.$n=" nim",$a,Sabeom.$n,Gyosa.$n,…
manatwork

@manatworkはい、2バイト節約されます。追加のバージョンを試しましたstrtrが、何の節約にもなりません
イェルクHülsermann

2

C#、262バイト

s=>{for(int i=0;i<8;)s=s.ToUpper().Replace("PRESIDENT|FOUNDER|MASTER INSTRUCTOR|TEACHER|BLACK BELT|MASTER LEVEL|STUDENT|COLOR BELT".Split('|')[i],(i<2?"GWANJANG":i>3?"GEUP":"SABEOM|GYOSA|DAN|GODANJA".Split('|')[i-2])+(i++<4?" NIM":""));return s+", *SIDE KICK*";}

フル/フォーマット済みバージョン:

class Program
{
    static void Main(string[] args)
    {
        System.Func<string, string> f = s =>
        {
            for (int i = 0; i < 8;)
                s = s.ToUpper().Replace("PRESIDENT|FOUNDER|MASTER INSTRUCTOR|TEACHER|BLACK BELT|MASTER LEVEL|STUDENT|COLOR BELT".Split('|')[i],
                                        (i < 2 ? "GWANJANG"
                                               : i > 3 ? "GEUP"
                                                       : "SABEOM|GYOSA|DAN|GODANJA".Split('|')[i-2])
                                        + (i++ < 4 ? " NIM" : ""));

            return s + ", *SIDE KICK*";
        };

        System.Console.WriteLine(f("I am a Student and I do Taekwondo twice a week"));
        System.Console.WriteLine(f("I am a Teacher willing to be a President"));

        System.Console.ReadLine();
    }
}

*SIDE KICK*小文字になっている例では、この形式にすることができるかどうか尋ねる必要があります
Mr. Xcoder

@ Mr.Xcoder OPのコメントには、バイトカウントの変更ではなく、大文字と小文字の区別がないと記載されています。また、大文字でのキックはより強力であるため、許可する必要があります...
TheLethalCoder 2017年

1
はい、ただその発言をしています...この答えはとにかく致命的です:))
Mr. Xcoder


0

tcl、212

puts "[string map -nocase {President Gwanjang\ nim Founder Gwanjang\ nim Master\ instructor Sabeom\ nim Teacher Gyosa\ nim Black\ Belt Dan Student Geup Color\ Belt Geup Master\ level Godanja} $argv], *side kick*"

デモ


@manatwork:修正されました。
sergiol 2017年

0

Python 3、281バイト

import re
x=input();a="Gwanjang";b=" nim";c="Geup";d="Master";e=" Belt"
for i in range(8):x=re.sub("(?i)"+["President","Founder",d+" instructor","Teacher","Black"+e,"Student","Color"+e,d+" level"][i],[a+b,a+b,"Sabeom"+b,"Gyosa"+b,"Dan",c,c,"Godanja"][i],x)
print(x+", *side kick*")

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


0

JavaScript(ES6)、251バイト

a=>a.replace(RegExp(b='president|founder|master instructor|teacher|black belt|student|color belt|master level','gi'),c=>((d='Gwanjang nim|')+d+'Sabeom nim|Gyosa nim|Dan|Geup|Geup|Godanja').split`|`[b.split`|`.indexOf(c.toLowerCase())])+', *side kick*'

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

JavaScriptは非常に冗長であるため、これはそれほどコンパクトではありませんが、すばらしい質問です。私はテコンドーで2番目のダンブラックベルトなので、これらの用語のほとんどを認識しました。

説明

a=>
  a.replace(                                    // Replace on input string
    RegExp(                                     // Regex matching English phrases
      b='president|founder|master instructor|teacher|black belt|student|color belt|master level',
      'gi'                                      // Match all, case insensitive
    ),
    c=>
      ((d='Gwanjang nim|')+d+                   // Duplicate string portion
        'Sabeom nim|Gyosa nim|Dan|Geup|Geup|Godanja') // Add remaining phrases
      .split`|`                                 // Split into array by pipe
        [b.split`|`.indexOf(c.toLowerCase())])  // Access Korean phrase by corresponding index of matched English phrase
      +', *side kick*'                          // I like to do side kicks

0

JavaScript(ES6)、233バイト

s=>(btoa`>·¬×§·mÁ©ãjx4)µ§uêö§©àÒx¦ÔƬµêô{-®ç-¢½i·¨IâTÞiÈ^¯a²¢Æ´)µV@^Ýj}R¶ç^Ýzêu
h¯@^Ýzêu1«-z½%z÷¥ØjjxÚ`.split(0).join` `.split`1`.map(d=>([a,b]=d.split(/2+/),s=s.replace(RegExp(a,'gi'),b))),s+', *side kick*"')


JavaScript(ES6)、243バイト

s=>(`President${A=':Gwanjang nim|'}Founder${A}Master instructor:Sabeom nim|Teacher:Gyosa nim|Black Belt:Dan|Student:Geup|Color Belt:Geup|Master level:Godanja`.split`|`.map(r=>([a,b]=r.split`:`,s=s.replace(RegExp(a,'gi'),b))),s+', *side kick*')

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