태권도 좋아하세요?


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 2016 년

1
한국인으로서 저는이 도전에 찬성합니다. 그러나 나는 Geup(유급)이 실제로 '학생'을 의미하지 않는다고 말해야합니다 . Haksaeng(학생)이 더 좋을 것입니다. 또한 무술 강사의 경우 숙달 여부에 관계없이 (교범 님 Sabeom nim) 대신 (사범님)을 사용합니다. Gyosa nimGyobeom nim
JungHwan Min

2
side kick의 다른side-kick
sergiol

1
@sergiol 질문 업데이트
Weedoze 2016 년

답변:



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

"이 변경된 문장을 문자열로 출력해야합니다." 실제로 의미하지만 사이드 킥이 항상 추가되어야하므로 문장이 항상 변경 될 것이라고 말하면 항상 무언가가 출력되어야합니다. 예를 들어“Me coder, no 태권도”와 같은 입력의 경우.
manatwork

@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*이 형태 일 수는 소문자로 된 예에서,
씨 Xcoder

@ Mr.Xcoder OP에 대한 의견은 바이트 수의 변경이 아닌 대소 문자를 구분하지 않는다고 말합니다. 이 허용되어야한다, 그래서 또한 대문자로 킥 ... 더 강력하다
TheLethalCoder

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

0

파이썬 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

자바 스크립트 (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

자바 스크립트 (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*"')


자바 스크립트 (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.