你喜欢跆拳道吗?


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

10
@LiefdeWen显然需要空间。如何side kick在对手之间留出空间?
Weedoze

1
作为韩国人,我赞成这一挑战。但是我必须说Geup(급)并不是真正的“学生”。Haksaeng(학생)会更好。另外,无论是精通技巧,还是武术教练,您都可以使用Sabeom nim(사범님)而不是Gyosa nim(교사님)((교범님)字Gyobeom nim存在,但很少使用)。
JungHwan Min

2
side kick是不同的side-kick
sergiol

1
@sergiol问题已更新
Weedoze

Answers:


2

视网膜,154字节

i(`president|founder
Gwanjang_
master instructor
Sabeom_
teacher
Gyosa_
black belt
Dan
student|color belt
Geup
master level
Godanja
_
 nim
$
, *side kick*

在线尝试!


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 2015年

不清楚“您必须将此更改后的句子作为字符串输出”。实际意思是,但由于必须始终添加侧踢,我想说的是,该句子将始终更改,因此应始终输出某些内容。例如,在“ Me coder,没有跆拳道”之类的输入的情况下。
manatwork

@manatwork表示有效输入。在有效输入下,我假设输入带有标题。您与数str_ireplace是正确的
约尔格Hülsermann

1
似乎有足够的“尼姆”值得一个变量:[$a=Gwanjang.$n=" nim",$a,Sabeom.$n,Gyosa.$n,…
manatwork

@manatwork是的,它节省了两个字节。我已经尝试了版本加上额外的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*可以采用这种形式,在示例中将其小写
Xcoder先生17年

@ Mr.Xcoder在OP上的注释说它不区分大小写,无论哪种方式都不会改变字节数。大写的踢力也更强大,因此应该允许...
TheLethalCoder

1
是的,只是说一下...这个答案无论如何都是致命的:))
Xcoder先生,2017年

1

视网膜,163字节

i`President|Founder
Gwanjang¶
i`Master instructor
Sabeom¶
i`Teacher
Gyosa¶
i`Black Belt
Dan
i`Student|Color Belt
Geup
i`Master level
Godanja
¶
 nim
$
, *side kick*

在线尝试!


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

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太冗长,所以它并不那么紧凑,但这是一个很大的问题。我是跆拳道的第二个丹·黑带,所以我认识了大多数这些术语。

解释

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*')

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.