Czy podoba Ci się Taekwondo?

9

Choi Hong Hi zmarł 15 czerwca 2002 roku w honorowym wieku 83 lat. Założył Taekwondo .

15 lat po jego śmierci chciałbym zostać mistrzem Taekwondo. To jest mój czas, aby zabłysnąć!

Zadanie

Biorąc pod uwagę ciąg, powinieneś wypisać wersję Taekwondo .

Zasady

  • Otrzymasz niepusty ciąg / zdanie przy dowolnym poprawnym wprowadzeniu
  • Musisz zastąpić każdy tytuł (bez rozróżniania wielkości liter) zmienionym odpowiednikiem romanizacji .
  • Musisz dodać , *side kick*na końcu zdania, ponieważ lubię wykonywać kopnięcia boczne.
  • Zmienione zdanie należy wyprowadzić jako ciąg.
  • To jest powinieneś dążyć do zminimalizowania liczby bajtów twojej odpowiedzi

Przykłady

"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*"

Lista tytułów

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
Weedoze
źródło
1
wielkość liter nie ma znaczenia? i jest to miejsce potrzebne wcześniej*side kick*
LiefdeWen
10
@LiefdeWen Przestrzeń jest oczywiście potrzebna. Jak możesz zrobić side kickbez odstępu między tobą a przeciwnikiem?
Weedoze
1
Jako Koreańczyk pochwalam to wyzwanie. Ale muszę powiedzieć, że Geup(급) tak naprawdę nie znaczy „uczeń”. Haksaeng(학생) byłoby lepiej. Ponadto, Sabeom nimużyłbyś (사범님) zamiast Gyosa nim(교사 님), jeśli chodzi o instruktora sztuk walki, niezależnie od biegłości (Słowo Gyobeom nim(교범 님) istnieje, ale jest rzadko używane).
JungHwan Min
2
side kickróżni się odside-kick
sergiol,
1
@sergiol Pytanie zaktualizowane
Weedoze

Odpowiedzi:

2

Retina , 154 bajty

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

Wypróbuj online!

Okx
źródło
3

PHP , 241 bajtów

<?=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*");

Wypróbuj online!

Jörg Hülsermann
źródło
1
Jak liczę, byłoby to krótsze str_ireplace().
manatwork
Niejasne, co „Musisz wydać to zmienione zdanie jako ciąg znaków”. w rzeczywistości oznacza, ale biorąc pod uwagę, że należy zawsze dodać kopnięcie boczne, powiedziałbym, że zdanie zawsze się zmieni, więc coś powinno zawsze być wyprowadzane. Na przykład w przypadku wprowadzania takiego jak „Me coder, no Taekwondo”.
manatwork
@manatwork Mówi prawidłowe wejście. Pod prawidłowym wejściem zakładam wejście z tytułem. Twoje obliczenia str_ireplacebyły prawidłowe
Jörg Hülsermann
1
Nie wydaje się być na tyle „NIM” do wartości zmiennej: [$a=Gwanjang.$n=" nim",$a,Sabeom.$n,Gyosa.$n,….
manatwork
@manatwork Tak, to oszczędza dwa bajty. Próbowałem wersji z dodatkowym, strtrale nic nie oszczędza
Jörg Hülsermann
2

C #, 262 bajtów

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*";}

Wersja pełna / sformatowana:

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();
    }
}
TheLethalCoder
źródło
Powinniśmy zapytać, czy *SIDE KICK*może być w tej formie, w przykładach był
pisany
@ Mr.Xcoder Komentarz do OP mówi, że nie uwzględnia wielkości liter, w każdym razie nie jest to zmiana liczby bajtów. Również kopnięcie wielkimi literami jest silniejsze, więc powinno być dozwolone ...
TheLethalCoder
1
Tak, tylko ta uwaga ... W każdym razie ta odpowiedź jest Śmiertelna :))
Pan Xcoder
1

Siatkówka , 163 bajty

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*

Wypróbuj online!

ovs
źródło
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*"

próbny

sergiol
źródło
@manatwork: naprawiono.
sergiol
0

Python 3 , 281 bajtów

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

Wypróbuj online!

Officialaimm
źródło
0

JavaScript (ES6), 251 bajtów

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

Wypróbuj online!

Nie jest to tak kompaktowe, jak mogłoby być, ponieważ JavaScript jest tak gadatliwy, ale to świetne pytanie. Rozpoznałem większość z tych terminów, ponieważ jestem drugim danem Czarny pas w Taekwondo.

Wyjaśnienie

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
andrewarchi
źródło
0

JavaScript (ES6), 233 bajty

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 bajty

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

darrylyeo
źródło