태그 보관물: code-golf

code-golf

A 없음, 단지 CAPS LOCK quick brown fox jumps

CapsLock키보드 의 키에 노치가 없으면 어떻게됩니까 ?

“이 hPPENS.”

이 프로그램의 목표는 각 A프레스가로 교체 되는 키보드 미스를 일관되게 모방하는 것 입니다 CapsLock. 소스의 대문자 ‘A’도 동일한 효과를냅니다. CapsLock활성화되어, 총액은 반전됩니다.

테스트 사례

"The quick brown fox jumps over the lazy dog."
-> "The quick brown fox jumps over the lZY DOG."

"Compilation finished successfully."
-> "CompilTION FINISHED SUCCESSFULLY."

"What happens when the CapsLock key on your keyboard doesn't have a notch in it?"
-> "WhT Hppens when the CPSlOCK KEY ON YOUR KEYBOrd doesn't hVE  notch in it?"

"The end of the institution, maintenance, and administration of government, is to secure the existence of the body politic, to protect it, and to furnish the individuals who compose it with the power of enjoying in safety and tranquillity their natural rights, and the blessings of life: and whenever these great objects are not obtained, the people have a right to alter the government, and to take measures necessary for their safety, prosperity and happiness."
-> "The end of the institution, mINTENnce, ND dministrTION OF GOVERNMENT, IS TO SECURE THE EXISTENCE OF THE BODY POLITIC, TO PROTECT IT, nd to furnish the individuLS WHO COMPOSE IT WITH THE POWER OF ENJOYING IN Sfety ND TRnquillity their nTURl rights, ND THE BLESSINGS OF LIFE: nd whenever these greT OBJECTS re not obtINED, THE PEOPLE Hve  RIGHT TO lter the government, ND TO Tke meSURES NECESSry for their sFETY, PROSPERITY nd hPPINESS."

"aAaaaaAaaaAAaAa"
-> "" (Without the notch, no one can hear you scream)

"CapsLock locks cAPSlOCK"
-> "CPSlOCK LOCKS CPSlOCK"

"wHAT IF cAPSlOCK IS ALREADY ON?"
-> "wHt if CPSlOCK IS lreDY ON?"

우승 기준은 일반적으로 제출 된 프로그램의 소스 코드 크기입니다.



답변

AutoHotKey , 7 바이트

a::vk14

// 이것이 유효합니까? 이것은 실제로 OP가 원하는 것을 수행-대체 a합니다 CapsLock (vk14).

이 프로그램을 실행하고 키보드 입력을 입력하십시오.


답변

V , 9 바이트

ò/ãa
xg~$

온라인으로 사용해보십시오!

16 진 덤프 :

00000000: f22f e361 0a78 677e 24                   ./.a.xg~$

설명:

ò       " Recursively:
 /ãa    "   Move forward to the next 'a' (upper or lowercase)
        "   This will break the loop when there are no more 'a's
x       "   Delete the 'a'
 g~$    "   Toggle the case of every character after the cursor's position.

답변

Vim, 16 바이트

qq/\ca
xg~$@qq@q

입력이 한 줄에 있다고 가정

설명

qq            Start a loop
 /\ca␊         Find the first occurence of an a, end the loop if there are none left
 xg~$          Remove it and invert the case of the rest of the file
@qq@q         End the loop

답변

C, 72 바이트

16 바이트 절약에 도움을 주신 @Ton Hospel에게 감사드립니다!

t,c;f(char*s){for(t=0;c=*s++;6305%c?putchar(isalpha(c)?c^t:c):(t^=32));}

온라인으로 사용해보십시오!


답변

껍질 , 11 바이트

Γ·§?m\:€"Aa

온라인으로 사용해보십시오!

설명

나는의 다소 모호한 오버로드 사용하고 Γ호출 listNF목록에서 작동 재귀 함수를 구성한다. 다음 Haskell 패턴에 해당합니다.

listNF f = g
  where g (x : xs) = f g x xs
        g [] = []

아이디어는 listNF도우미 함수를 사용 f하고 새 함수를 반환 g하여 목록을 가져 오는 것입니다. 이 함수 f는 항상 ,리스트 g의 머리 x와 꼬리 xs인 함수를 가져 와서 무언가를 수행합니다. 우리의 애플리케이션에서에 재귀 적으로 f호출 g합니다 xs. 프로그램은 다음과 같이 해석됩니다.

Γ (· (§ (?m\) : (€"Aa")))
Γ (                     )  Create a function g that takes a list (x:xs) and applies a function on x and xs.
   · (                 )   Compose g with second argument of function in parentheses.
                           Instead of x and xs, the function is called on x and the result of a recursive call of g on xs.
                (€"Aa")    Check if x is 'A' or 'a'.
        (?m\)              If it is, then swap the case of every char in g(xs).
      §       :            Otherwise, prepend x to g(xs).

답변

망막 , 33 21 17 바이트

i(Tv`lL`Ll`a.*
a

온라인으로 사용해보십시오

설명:

i(              i is for case-insensitive, the paren makes it modify both stages
  Tv`           Transliteration, with simple overlaps (v) - 1 match at every start pos
     lL`Ll`     Replace lowercase with uppercase, and vice versa
           a.*  Every 'a' will match, overlapping to the end of the string
                This swaps the case on all letters after each 'a'
a               Replace all 'a's with nothing

Martin 덕분에 -12 바이트
Leo 덕분에 -4 바이트


답변

C # , 121 바이트

Console.WriteLine(string.Join("",Console.ReadLine().Split(new[]{'a','A'}).Select((a,i)=>i%2==0?a:a.ToUpper()).ToList()));

** 업데이트 (@John & @aloisdg 덕분에) **

C # , 69 바이트

x=>string.Concat(x.Split('a','A').Select((a,i)=>i%2>0?a.ToUpper():a))