뚱뚱한 손가락 수정


21

코드 골프 챌린지

나는 isdue를 가지고 있으며, 나의 손가락은 뚱뚱하며 나는 내 kryboard의 오른쪽에 하나의 키스 트립 크를 타이의 isdue를 freqintly jave합니다.

시간이 지남에 따라 isdue가 getyng 더 나빠질 까봐 두렵습니다.

내가 모든 키스 트립 크를 쓸어 버려야한다. 오른쪽으로 쉬프트 pne하십시오!

그런 다음 Befpre는 모든 키스 트립 크를 다시 왼쪽 키로 전환하는 프로그램 (또는 기능)을 원합니다.

나는 내 tome typong을 tjis chal의 나머지 부분으로 가져 가야합니다.


목표:

표준 QWERTY 키보드에서 다음 녹색 키 중 하나를 입력하고 키의 문자를 왼쪽으로 리턴하는 프로그램 또는 기능을 작성하십시오.여기에 이미지 설명을 입력하십시오


정황:

•이 프로그램을 실행하는 사람이 위 그림과 같은 QWERTY 키보드를 사용하고 있다고 가정 할 수 있습니다.

• 입력과 출력은 모두 대소 문자를 구분하지 않으므로이 문제에 대해 대 / 소문자를 혼합하여 사용할 수 있으며 원하는 경우 모든 입력이 한 경우에 있다고 가정 할 수도 있습니다.

• 언어가 어떤 이유로 사용자가 리턴 키를 입력 할 수있는 방법이 없다면이 키 입력을 무시할 수 있습니다

•이 도전은 키의 기본값에 대한 것입니다. 예를 들어 4키를 누르면 항상 4그리고 결코 없을 것이라고 가정 할 수 있습니다$

• 녹색 키만 누르는 것으로 가정 할 수 있습니다.


Input-> Output:

S-> a
4-> 3
=-> -
[->p


이것은 이므로 가장 짧은 바이트 수를 가진 프로그램이 승리합니다!


테스트 케이스를 제공 할 수 있습니까?
Kritixi Lithos

1
@KritixiLithos 확실히! 지금에 tjat 편집 할 수 있습니다 @
알버트 렌쇼에게

당신은 의미했다 ]-> [?
shooqie


3
신경 쓰지 않아도되지만 흥미로운 퀴즈가 있습니다. 이것은 ANSI 키보드 레이아웃입니다. Enter 키 위의 백 슬래시를 확인하십시오. 백 슬래시 버튼이 Z 왼쪽에있는 ISO 키보드와 달리 (미국식이지만 쉽게 식별 할 수 있습니다!)
Doddy

답변:


7

루비, 76 71 69 바이트

->a{"`1234567890-=qwertyuiop[]\\asdfghjkl;'\nzxcvbnm,./"[/.#{a}/][0]}

5

펄 6 , 87 83 69 바이트

{[Q"`1234567890-=qwertyuiop[]\asdfghjkl;'
zxcvbnm,./".comb].&{%(.[1..*]Z=>$_)}{$_}}

{~Q"`1234567890-=qwertyuiop[]\asdfghjkl;'
zxcvbnm,./".match(/.)>$_/)}

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

하드 코딩 된 문자열을 더 짧은 것으로 인코딩하는 방법이 있는지 궁금합니다 ...

( -14 바이트에 대한 스톨 GB의 정규식 아이디어 )


1
만약 우리가 $"범위를 가졌다 면 약간의 문자를 절약 할 수있을 것입니다
Ven

5

젤리 , 34 33 바이트

ØD”`1¦ṭØqż“[]\“;'¶“,./“0-=”Fṡ2UZy

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

작동 원리

ØD”`1¦ṭØqż“[]\“;'¶“,./“0-=”Fṡ2UZy  Main link. Argument: s (string)

ØD                                 Digits; yield "0123456789".
  ”`1|                             Replace '0' with a backtick.
       Øq                          Qwerty; yield
                                   ["qwertyuiop", "asdfghjkl", "zxcvbnm"].
      ṭ                            Tack; add "`123456789" as the last element of
                                   the qwerty array.
          “[]\“;'¶“,./“0-=”        Yield ["[]\\", ";'\n", "0-="].
         ż                         Zip; combine the strings of the array to the
                                   left with the corresponding strings of the array
                                   to the right, yielding an array of string pairs.
                           F       Flatten, yielding a string.
                            ṡ2     Obtain all overlapping pairs of characters.
                              U    Upend; reverse each pair.
                               Z   Zip, yielding a pair of strings.
                                y  Translate the input s according to the generated
                                   replacement table.

3
젤리를 모르겠습니다. 코드에 대한 설명을 추가 할 수 있습니까? 난 당신이 전체 키보드의 문자열 문자를 입력하지 않고 멀리 있었는지 궁금하다
알버트 렌쇼을

1
아직 시간이 없었지만 최대한 빨리 설명을 추가하겠습니다.
Dennis

1
끝난. 나는 또한 약간 골프를 쳤다.
Dennis

1
Øq맵시 있는! 고마워요!
Albert Renshaw

4

파이썬 3, 85 78 바이트 :

lambda x,k="`1234567890-=qwertyuiop[]\\asdfghjkl;'\nzxcvbnm<>?":k[k.‌​find(x)-1]

1
lambda x,k="1234567890-=qwertyuiop[]\\asdfghjkl;'\nzxcvbnm<>?":k[k.find(x)-1]바이트 1 개를 사용하여 문자열을 선택적 매개 변수로 전달할 수 있습니다. 바이트 수를 줄이려면
Rod

좋은 지적입니다. 추가하겠습니다.
L3viathan

나는 당신이 1의 왼쪽에 백틱이 필요하다고 생각합니다.
xnor

@ xnor 맞아요.
L3viathan

4

파이썬 , 76 바이트

s="1234567890-=qwertyuiop[]\\asdfghjkl;'\nzxcvbnm<>?"
dict(zip(s,'`'+s)).get

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

시프트 된 버전으로 문자열을 압축하여 각 키를 왼쪽으로 이동하는 사전을 만듭니다. 결론은 함수이고, 최상위는 정의입니다.

translate매핑을 만드는 데 사용하면 더 긴 솔루션이 제공되었습니다. 온라인으로 사용해보십시오!

lambda s:s.translate("';"*22+"_0__9`12345678_LM-<>_\\VXSWDFGUHJKNBIO=EARYCQZT\nP][___"*4)

4

망막 , 53 51 바이트

T`1-90\-=QW\ERTYUI\OP[]\\ASDF-HJ-L;'¶ZXCVBNM,./`\`o

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

모든 문자 1 위치를 뒤로 이동하는 간단한 음역입니다. 에서 1까지의 모든 것이 /원래 문자 세트이고 다음 부분은 o기타 세트를 나타내는 데 사용되는 새로운 세트 입니다.

HL특수 문자 망막 음역의 클래스 (각각 16 진수와 문자를 대문자 매핑)하지만 내부 alfabetically 명령 시퀀스 (그들은 키보드에서 발생 다행히 FGHJKL우리는 범위와 같은 이득에 넣어서 이스케이프 피할 수), 그래서 2 바이트



3

TI 기본, 70 바이트

나는 이것이 이것보다 짧을 수 있다고 의심합니다 ...

Input Str1
"`1234567890-=QWERTYUIOP[]\ASDFGHJKL;'ZXCVBNM,./
sub(Ans,inString(Ans,Str1)-1,1

PS 2 바이트 토큰은 Str1, `, \, sub(, 및 inString(.


3

V , 57 54 51 바이트

hxVp멀티 라인 키보드 대신 내가 사용했던 @ nmjcman101 덕분에 3 바이트 절약

i`¬190-=qwertyuiop[]\asdfghjkl;'zxcvbnm,./<esc>/<C-r>a
hxVp

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

<esc>이다 0x1b<c-r>이다0x12

참고 : Enter 키를 지원하지 않습니다

인쇄 할 수없는 것들이 포함되어 있습니다.

00000000: 6960 ac31 3930 2d3d 7177 6572 7479 7569  i`.190-=qwertyui
00000010: 6f70 5b5d 5c61 7364 6667 686a 6b6c 3b27  op[]\asdfghjkl;'
00000020: 7a78 6376 626e 6d2c 2e2f 1b2f 1261 0a68  zxcvbnm,././.a.h
00000030: 7856 70                                  xVp

설명

대부분의 프로그램은 키보드를 생성합니다. i삽입 모드로 들어가고 그 뒤의 모든 문자가 버퍼에 인쇄됩니다. 그러나 여기에는 작은 ¬19특징이 있으며 1에서 9 사이의 문자를 삽입합니다.

에서 프로그램이 삽입 모드를 종료합니다 <esc>. 그런 다음 /<c-r>a버퍼에서 인수를 검색합니다. 이렇게하면 찾은 문자 위에 커서가 나타납니다.

h                  " move the cursor to the left
 x                 " delete this character
  Vp               " select this line and replace it with the deleted character

나는 100 %가 아니지만 hylHVGp@DJMcMayhem이 오토바이 질문에서와 같은 작업을 수행 할 수 있다고 생각합니다 hxVp. 왜 G거기에 넣었는지 모르겠습니다. 모두 한 줄입니까? 또한 dhVp작동합니다.
nmjcman101

@ nmjcman101 아 G, 키보드 가 여러 줄로 사용 된 이후로 계속 유지해야합니다 . 감사!
Kritixi Lithos

2

PowerShell, 82 바이트

$k="1234567890-=qwertyuiop[]\asdfghjkl;'
zxcvbnm,./";$k[$k.IndexOf((read-host))-1]

Enter 키는 지원되지만 Read-Host값없이 Enter 키를 누르는 작업은 PowerShell에서 아무 것도 반환하지 않으므로 테스트 할 수 없습니다 .


2

apt , 56 42 바이트

;D=Dv ·q i"[]\\",A i";'",22 +",./")Dg1nDbU

설명

;D=Dv ·q i"[]\\",A i";'",22 +",./")Dg1nDbU

;D=D                                        // Shortcut for QWERTY (with newlines and spaces), assigning to variable D
    v                                       // Setting D to lowercase
      ·q                                    // Joining D into an array with no spaces or newlines
        i"[]\\",A                          // Inserting "[]\" into index 10 (A)
                   i";'",22                 // Inserting ";'" into index 22
                           +",./"           // Appending ",./"
                                  Dg        // Returns the character at index:
                                    1n      //    -1+
                                       DbU  //     Index of U (the input)

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


이 것이 멋지다. 설명을 추가 할 수 있습니까?
Albert Renshaw

1
@AlbertRenshaw 설명을 추가했습니다.
Oliver

2

자바 8, 99 바이트

c->{String r="`1234567890-=qwertyuiop[]\\asdfghjkl;'\nzxcvbnm,./";return r.charAt(r.indexOf(c)-1);}

설명:

여기에서 시도하십시오.

c->{                // Method with character as both parameter and return-type
  String r="`1234567890-=qwertyuiop[]\\asdfghjkl;'\nzxcvbnm,./";
                    //  Literal String of the qwerty keyboard layout of the challenge
  return r.charAt(  //  Return the character at the following index:
    r.indexOf(c)    //   The index of the input character
    -1);            //   -1 to shift it to the left
}                   // End of method

1
나는 포기한다. 나는 정규식으로 일을하려고했지만, 나는 비참하게 일부 특수 문자와 함께 실패 ... c->"`1234567890-=qwertyuiop[]\\asdfghjkl;'\nzxcvbnm,./".replaceAll("(?s).*(.)"+c+".*","$1").
Olivier Grégoire

2

자바 스크립트 (ES6), 74 바이트

c=>(s=".,mnbvcxz\n';lkjhgfdsa\\][poiuytrewq=-0987654321`")[s.indexOf(c)+1]

/내 문자열에 없기 때문에를 indexOf반환 -1하면 증가하면 .출력됩니다. 문자열을 처리하는 93 바이트 :

s=>s.replace(/./g,c=>s[s.indexOf(c)+1],s="><mnbvcxz\n';lkjhgfdsa\\][poiuytrewq=-0987654321`")

@KevinCruijssen 실수로이 3 개의 키를 옮겼다는 점에 감사드립니다. 나는 지금 그들을 쉬프트했다.
Neil

1

GNU sed , 72 + 1 (r 플래그) = 73 바이트

s:$:`1234567890-=qwertyuiop[]\\asdfghjkl;'\nzxcvbnm,./:
s:(.).*(.)\1.*:\2:

sed by design은 입력을 \n구분자로 사용하여 입력을 분할 한 다음 줄이있는 횟수만큼 스크립트를 실행 하기 때문에 리턴 키를 테스트 할 수 없습니다 .

테스트 실행 : 연속 입력-출력 쌍 (완료되면 Ctrl + D 또는 Ctrl + C를 누름)

me@LCARS:/PPCG$ sed -rf shift_key.sed
s
a
4
3
=
-
a
\
1
`
\
]

1

05AB1E , 50 바이트

'`žhÀ"-=qwertyuiop[]\\asdfghjkl;'\nzxcvbnm,./"JDÀ‡

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

설명:

'`                                                  # 1 char string: `
  žh                                                # Push numbers 0123456789
    À                                               # Rotated 1 left (123456890)
     "-=qwertyuiop[]\\asdfghjkl;'\nzxcvbnm,./"      # Push string literal
                                              J     # Join all elements pushed to the stack to one string
                                               D    # Duplicate
                                                À   # Rotate 1 left
                                                 ‡  # Transliterate: a.get(b.indexOf(input))

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.