쿼티 키보드 출력


37

문자가 주어지면 문자 뒤에 오는 전체 쿼티 키보드 레이아웃 (공백과 줄 바꿈)을 화면에 출력하십시오. 예를 통해 명확하게 알 수 있습니다.

입력 1

f

출력 1

g h j k l
z x c v b n m

입력 2

q

출력 2

w e r t y u i o p
a s d f g h j k l
z x c v b n m

입력 3

m

출력 3

(출력없이 프로그램이 종료 됨)

입력 4

l

출력 4

z x c v b n m

가장 짧은 코드가 승리합니다. (바이트)

추신

추가 줄 바꿈 또는 줄 끝에 추가 공백이 허용됩니다.


함수가 충분합니까, stdin / stdout을 읽고 쓰는 전체 프로그램이 필요합니까?
agtoever

1
당으로 @agtoever meta.codegolf.stackexchange.com/questions/7562/... , 그것은이 허용됩니다. 그러나이 기능은 여전히 ​​화면에 출력되어야합니다.
ghosts_in_the_code

@agtoever 대신이 링크를 사용해보십시오. meta.codegolf.stackexchange.com/questions/2419/…
ghosts_in_the_code

1
행이 허용되기 전에 선행 공간이 있습니까?
Sahil Arora

1
@SahilArora Nope.
ghosts_in_the_code

답변:


19

CJam, 42 40 바이트

"wertyuiop asdfghjkl zxcvbnm"q/W=S%Sf*N*

여기에서 테스트하십시오.

설명

"we...nm"
     e# Push the letters in order, without q. We don't need q, because it will never
     e# be part of the output.
q/   e# Split the string around the input. If the input is "q", the entire string
     e# will go into a single chunk.
W=   e# Select the last chunk.
S%   e# Split the string around spaces, discarding empty segments (only relevant for the 
     e# first segment if the input is "p" or "l").
Sf*  e# Join each line by spaces.
N*   e# Join the lines by linefeeds.

무엇입니까 e#? 주석의 CJam 구문입니까? 미리 감사드립니다.
AL

@AL 예입니다.
Martin Ender

11

Pyth, 33 바이트

jjL\ cec."`zÈ´ýß44,ûtKÕÀ@"z\`

일부 문자는 인쇄 할 수 없습니다. Pyth Compiler 에서 온라인으로 사용해보십시오 .

작동 원리

jjL\ cec."`z…"z\`

        ."`z…"     Unpack …, with lowest character '`' and highest character `z`.
       c      z    Split at occurrences of the input (z).
      e            Retrieve the last resulting chunk.
     c         \`  Split into rows, at backticks.
 jL\               Separate the characters of each row by spaces.
j                  Separate the rows by linefeeds.

Aw man, 나는 방금 첫 번째 Pyth 프로그램을 만들었고 (38 바이트 만!), 당신은 따라왔다 ... +1 BTW, 나는 같다고 생각 \ 한다 d.
ETHproductions

죄송합니다. 같지 않은 것 같습니다. 무엇이 다른가요?
ETHproductions

1
@ETHproductions @Dennis md55 개의 공백을 생성하지 않는 이유와 동일한 이유 입니다. d지도 연산자의 반복 가능한 인수를 반복하는 기본 변수입니다. 그리고 jL\ <list>지도 연산자의 바로 가기입니다 mj\ d<list>.
Jakube

1
@Jakube 오, 그 말이 맞습니다. 감사!
Dennis

10

펄, 56 바이트

#!perl -p
'qwertyuiop
asdfghjkl
zxcvbnm'=~/$_
?/;$_=$';s/\B/ /g

shebang을 3으로 계산하면 입력이 stdin에서 가져옵니다. 선도적 인 개행 문자가 입력에 대한 우려가 아닌 경우 pl, 다음 /$_\n?/베어로 대체 할 수있다 $_(4)을 저장합니다.


샘플 사용법

$ echo g|perl qwerty.pl
h j k l
z x c v b n m

$ echo v|perl qwerty.pl
b n m

2
\K 를 가르쳐 주셔서 감사합니다 !
Dom Hastings

이 경우 @DomHastings는 바이트 수에 실제로 필요하지 않았으므로 s/.\B/$& /g동일하게 작동합니다. 좋은 예 .
primo

6

GS2 , 38 37 바이트

♦wertyuiop asdfghjkl zxcvbnm♣B3$,■♪2◙

소스 코드는 CP437 인코딩을 사용합니다 . 온라인으로 사용해보십시오!

시운전

$ base64 -d > qwerty.gs2 <<< BHdlcnR5dWlvcCBhc2RmZ2hqa2wgenhjdmJubQVCMyQs/g0yCg==
$ wc -c qwerty.gs2
37 qwerty.gs2
$ echo -n f | gs2 qwerty.gs2
g h j k l
z x c v b n m

작동 원리

♦                                      Begin string literal.
 wertyuiop asdfghjkl zxcvbnm
                            ♣          End string literal.
                             B         Swap the string with the input.
                              3        Split the string at the input character.
                               $       Select the last chunk.
                                ,      Split the selected chunk at spaces.
                                 ■     Map over the resulting array:
                                  ♪      Push ' '.
                                   2     Join the characters, separating by ' '.
                                    ◙    Push a linefeed.

6

C 번호는 112 바이트 (105) (110)

카운트가 5 바이트 증가했지만 더 정확합니다! 감사합니다 @ MartinBüttner !!

void c(char i){System.Console.Write(@"q w e r t y u i o p
a s d f g h j k l
z x c v b n m".Split(i)[1].Trim());}

언 골프

void c(char i)
{
    System.Console.Write(@"q w e r t y u i o p
    a s d f g h j k l
    z x c v b n m".Split(i)[1].Trim());
}

5

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

x=>[...`qwertyuiop
asdfghjkl
zxcvbnm`].join` `.split(x)[1]

대부분의 다른 답변과 동일한 기술을 사용합니다. 제안을 환영합니다!


왜 "..."을 사용하는지 설명 할 수 있습니까? JSFiddle을 사용하지 않고 계속 시도하고 있습니까?
Awashi

@Awashi 스프레드 연산자 입니다. 문자열을 문자 배열로 분리합니다. 그것 없이는 .join` `아무것도하지 않으며 결과에 공백이 없을 것입니다.
user81655 10

@ user81655 탱크 당신에게
Awashi

4

루비, 63 57 바이트

문자를 명령 행 인수로 사용합니다. ruby keyboard.rb e

"qwertyuiop
asdfghjkl
zxcvbnm".scan$*[0]
puts$'.chars*' '

4

티 스크립트 , 50 45 44 바이트

TeaScript는 골프를위한 JavaScript입니다.

`qwertyuiop
asdfghjkl
zxcvbnm`.s×[1]s(b)j(p)

언 골프와 설명

`qwertyuiop
asdfghjkl
zxcvbnm`.s(x)[1]s(b)j(p)

      // Implicit: x = input string
`...` // Take the qwerty string,
.s(x) // and split it at the input.
[1]   // Take the second item from this,
s(b)  // split it into chars,
j(p)  // and join the result with spaces.
      // Implicit: output final expression

3

자바 스크립트 ES6, 73

f=x=>[...(k=`qwertyuiop
asdfghjkl
zxcvbnm`).slice(k.search(x)+1)].join` `

매개 변수가 p또는 l일 때 선행 줄 바꿈이 허용되지 않으면 83

f=x=>(k=`q w e r t y u i o p
a s d f g h j k l
z x c v b n m`).slice(k.search(x)+2)


3

Sed, 59 자

(58 자 코드 + 1 자 명령 행 옵션)

s/./&qwertyuiop\nasdfghjkl\nzxcvbnm/
s/(.).*\1//
s/\w/& /g

샘플 실행 :

bash-4.3$ echo -n 'f' | sed -r 's/./&qwertyuiop\nasdfghjkl\nzxcvbnm/;s/(.).*\1//;s/\w/& /g'
g h j k l 
z x c v b n m 

3

루비, 86 87 83 71 66

puts"qwertyuiop
asdfghjkl
zxcvbnm ".split($*[0])[1].gsub /./,'\& '

이후의 추가 공간 m은 입력이 'm'인 경우 프로그램이 충돌하는 것을 방지하는 것입니다.

~ 16 바이트의 팁을 제공하는 @manatwork 덕분에


마지막에 너무 많은 파이썬 코딩이 있습니까?
manatwork

1
약간의 구문 변경 : ARGV$*; each_charchars; do.. end{.. }; printf$><<+ %는 다음과 같이 이어 "qwertyuiop↵asdfghjkl↵zxcvbnm".split($*[0])[1].chars{|i|$><<"%s "%i}집니다. 더의 팁 루비에서 골프에 대한 .
manatwork

@manatwork 루비에서 처음으로 골프를 타려고 할 때 팁 / 링크에 감사드립니다!
SnoringFrog

1
나는 당신이 나의 첫 코멘트에 힌트를 얻지 못했다고 본다. 루비에서는 여러 줄 문자열 주위에 삼중 따옴표가 필요하지 않습니다. (실제로 나는 지금까지 루비가 받아 들였다는 것을 전혀 몰랐다.)
manatwork

1
출력의 선행 공간은 매우 추악합니다. 으로 .정규 표현식에 일치하지 않는 경우 \n, 기본적으로보다 효율적으로 사용하는 간격에 대한 : puts"qwertyuiop↵asdfghjkl↵zxcvbnm ".split($*[0])[1].gsub(/./,'\& '). 코드 길이는 동일하게 유지됩니다.
manatwork

2

PHP, 88 바이트

<?=$m[1&ereg("$argn.(.*)",'q w e r t y u i o p
a s d f g h j k l
z x c v b n m',$m)];

-F3으로 계산 된 명령 줄 옵션이 필요합니다. 기본 .ini 설정이 사용됩니다 (로 로컬 .ini를 비활성화 할 수 있음 -n).


샘플 사용법

$ echo g|php -F qwerty.php
h j k l
z x c v b n m

$ echo v|php -F qwerty.php
b n m

2

프롤로그 (SWI), 153133 바이트

편집 : @ Fatalize의 팁으로 20 바이트 잘라 내기

암호

b([A,_|T],[H]):-A=H,writef('%s',[T]);b(T,[H]).
p(X):-name(X,C),b(`q w e r t y u i o p \r\na s d f g h j k l \r\nz x c v b n m`,C),!.

설명

p(X):-name(X,C),                                                               % Get charcode of input
      b(`q w e r t y u i o p \r\na s d f g h j k l \r\nz x c v b n m`,C),!.    % Get keyboard chars as charcodes and call b
b([A,_|T],[H]):-A=H,                                                           % If list head is input element
                writef('%s',[T]);                                              % Interpret list as charcodes and print as string
                b(T,[H]).                                                      % Else remove first element of list and try again

>p(f).
g h j k l 
z x c v b n m

>p(q).
w e r t y u i o p 
a s d f g h j k l 
z x c v b n m

SWI-Prolog atom_codes를 사용하면 문자열 코드를 구분하는 백 따옴표를 사용하여 부품을 단축 할 수 있습니다 (따라서 문자열 호출에서 L을 직접 대체 할 수 있음 b).
페이탈 라이즈

@Fatalize 쿨! 어쨌든 테스트에 SWI-Prolog를 사용하고 있기 때문에 좋은 생각입니다.
Emigna

또한 b([A,_|T],[H]):-A=H,writef('%s',[T]);b(T,[H]).2 개의 다른 규칙 대신 사용 하는 b것이 7 바이트 더 짧습니다. ;술어의 이름과 매개 변수를 반복하지 않고 줄 바꿈도 피하기 때문에 일반적으로 여러 규칙을 작성하는 대신 모든 규칙을 OR을 사용 하여 하나의 규칙으로 병합하는 것이 항상 더 짧 습니다.)
Fatalize

내가 프롤로그를 배운 지 너무 오래되어서 당신이 그렇게 할 수 있다는 것을 완전히 잊었습니다. 좋은 팁! 감사합니다 :)
Emigna

2

펀드, 122 바이트

"m n b v c x z"25*"l k j h g f d s a"v
v1-")"g2-"U"~"q w e r t y u i o p"*25<
>-:#v_$>:#,_@ZVD0FHJ:LNP^\<>,2B48X.T6R
^1$\<

Befunge-93 Interpreter 에서 테스트되었습니다 .

작동 원리

  • 'q w e r t y u i o p\na s d f g h j k l\nz x c v b n m' 스택에 밀어 넣습니다.
  • 버릴 값의 개수 (에 하드 코딩 됨 @ZVD0FHJ:LNP^\<>,2B48X.T6R) N이 푸시됩니다.
  • 처음 N 값은 버리고 나머지 값이 인쇄됩니다.

노트

@프로그램과 겹치 도록 문자열이 시작되도록 인코딩을 선택했습니다 . 이 문자열은 다음 파이썬 코드로 생성됩니다.

import string
letters = string.ascii_lowercase
base = 'q w e r t y u i o p a s d f g h j k l z x c v b n m'
print(''.join(chr(base.index(x) + 32 + 9 + 3) for x in letters))

1
좋은 첫 대답! Code Golf SE에 오신 것을 환영합니다. (저도 새로
생겼습니다

1

볼거리-102 바이트

골프 스크립트 :

S A="qwertyuiopasdfghjklzxcvbnm",B=0 R P F I=1:1:$L(A) S Q=$E(A,I) W:B Q," " X:"qpl"[Q "W !" S:Q=P B=1

Ungolfed 및 댓글 :

 S A="qwertyuiopasdfghjklzxcvbnm" ; Need the qwerty order
 S B=0 ; boolean flag for printing, default to false.
 R P   ; read from stdin into P
 F I=1:1:$L(A) D   ; Count I from 1 to length of qwerty variable; do all of the following:
 . S Q=$E(A,I)     ; Extract 1 letter (at position I) from A and save in Q.
 . W:B Q," "       ; If our print flag (B) is true, print the letter in Q & a space.
 . X:"qpl"[Q "W !" ; If Q is q, p or l, write a cr/lf
 . S:Q=P B=1       ; If Q == P (stdin) change our print flag from false to true.

여분의 줄 바꿈을 허용하는 규칙은 거의 10 바이트를 절약했습니다 ...


1

자바-107 바이트

void q(char c){System.out.print("qwertyuiop\nasdfghjkl\nzxcvbnm ".split(""+c)[1].replaceAll("\\w","$0 "));}

System.in에서 래퍼 클래스 읽기로 ungolfed

public class Qwerty {

    public static void main(String[] args) {
        new Qwerty().q(new java.util.Scanner(System.in).next().charAt(0));
    }
    void q(char c) {
        System.out.print("qwertyuiop\nasdfghjkl\nzxcvbnm ".split(""+c)[1].replaceAll("\\w","$0 "));
    }
}

줄 시작 부분에 공백 이 허용되면 99 바이트로 줄일 수 있습니다.

void q(char c){System.out.print("qwertyuiop\nasdfghjkl\nzxcvbnm ".split(""+c)[1].replace(""," "));}

1

파이썬 2, 58 67 63 바이트 ##

lambda x:" ".join("qwertyuiop\nasdfghjkl\nzxcvbnm".split(x)[1])

입력을 문자열 또는 char로 취합니다. 입력에서 문자열을 분할하고 분할 후 모든 것을 인쇄합니다.

(처음으로 코드 골프를하시기 바랍니다.

편집 : 문자 사이에 필요한 추가 공백이 표시되지 않았습니다.

편집 2 : 익명 람다 함수로 수정하고 추가 분할 인수를 제거하여 4 바이트를 절약했습니다.


PPCG에 오신 것을 환영합니다! 나는 당신이 뒤에 공백이 필요하다고 생각하지 않지만 print, 이것은 각 문자 쌍 사이의 공백을 인쇄하지 않는 것 같습니다.
Martin Ender

지금은 참조를 제공 할 수 없지만 인터프리터가 입력의 추가 형식을 요구할 때 카운트에도 포함됩니다. (내가 틀렸다면 나를 "f"
고치십시오

좋은 첫 골프. 익명의 함수조차도 기본적으로 함수가 허용되므로이를 수행하는 것이 더 짧습니다 lambda s:.... 1캐릭터가 한 번만 나타나기 때문에 분할에 인수가 필요하지 않습니다 . 이것은 다음 줄의 시작 부분에 공백을 출력하지만 허용되는지 확실하지 않습니다.
xnor

1

루비, 59 57 67 바이트

문자 사이에 공백을 추가했습니다

puts"qwertyuiop\nasdfghjkl\nzxcvbnm".split(gets.chop)[-1].chars*' '

입력 "m"에서 실패합니다. 배열 인덱스를 -1에서 1로 변경하면 쉽게 고칠 수 있지만 입력 "m"이 발생 nil합니다. 문제 자체는 아니지만 문자 사이에 공백을 추가하기 위해 코드를 마칠 때 문제가 발생합니다.
manatwork

1

자바 스크립트, 88 바이트

function s(d){alert("qw e r t y u i o p\na s d f g h j k l\nz x c v b n m".split(d)[1])}

(출력에 도달하지 않으므로 첫 번째 문자 다음에 공백이 필요 없음)

전화를 걸면 키보드에 경고합니다 s("some letter"). document.write()또는 로 만들 수도 console.log()있지만 더 길어집니다 : P

데모:

function s(d){alert("qw e r t y u i o p\na s d f g h j k l\nz x c v b n m".split(d)[1])}

s(prompt("Enter the key"));


1
문자열 \n대신 대신 사용 ;하고 바꾸기를 제거 하여 몇 바이트를 절약 할 수 있습니다.
ETHproductions

@Eth 물론입니다. 감사합니다! 처음에는 줄 바꿈을 계산하지 않고 바꾸기가 짧아지기 때문에 바꾸기를 사용했습니다. 그런 다음 줄 바꿈이 있어야한다는 것을 알았으므로 replace를 다시 사용했습니다. D : 심지어는 더 이상 코드를 만들 수있는 생각하지 않았다
nicael

1

SQL (MS T-SQL), 172 바이트

CREATE PROC c @I CHAR(1) AS DECLARE @S CHAR(49) SET @S = 'w e r t y u i o p' + CHAR(13) + 'a s d f g h j k l' + CHAR(13) + 'z x c v b n m' PRINT RIGHT(@S,LEN(@S)-CHARINDEX(@I,@S))

언 골프 드 :

CREATE PROC c                           -- Create a procedure named "c"
    @I CHAR(1)                          -- Which is invoked with a single character input (@I)
AS

DECLARE @S CHAR(49) = 'w e r t y u i o p' + CHAR(13) + 'a s d f g h j k l' + CHAR(13) + 'z x c v b n m' -- Initialise the entire output omitting "q " as @S
PRINT RIGHT(@S,LEN(@S)-CHARINDEX(@I,@S))    -- Use the charindex funtion to effectively substring @S

나는 여기 새로 왔으며 단지이 사이트를 발견했다. 올바르게 게시했는지 또는 T-SQL이 허용되는지는 모르지만 위의 절차가 작동한다는 것을 알고 있습니다.


1

O 2.2, 48 46 자

"qwertyuiop
asdfghjkl
zxcvbnm
"i/r;s{n.U=ST?}d

샘플 실행 :

bash-4.3$ ./o keyboard.o <<< 'f'
g h j k l 
z x c v b n m 

O, 61 자

"qwertyuiop\nasdfghjkl\nzxcvbnm\n"i/r;""/rl{.o"\n"={}{' o}?}d

샘플 실행 :

bash-4.3$ java xyz.jadonfowler.o.O keyboard.o <<< 'f'
g h j k l 
z x c v b n m 

어떤 이유로 IDE에서 작동하지 않습니다. 지금 살펴보십시오 ...
Phase

"qwertyuiop\nasdfghjkl\nzxcvbnm\n"i/r;s{n.'\n=ST?}d새 인터프리터에서만 작동하지만 51 바이트입니다.
단계

퍼머 링크는 ... 진행중인 작업 : P
phase

그래의 libregexp 디렉토리

자식은 다음의 REPO를 복제 git submodule update --init한 후,make
단계

1

Japt , 49 42 41 40 38 바이트

JaptJa vaScri pt 의 단축 버전입니다 . 통역사

`qØÆyuiop\n?dfghjkl\nzxcvbnm`qU g1 ¬qS

?인쇄 할 수없는 유니 코드 문자 U + 0086이어야한다.

작동 원리

          // Implicit: U = input char
`...`     // Take the compressed string and decompress it.
qU g1     // Split the string at the input and take the second item.
¬qS       // Split into chars, then join with spaces.
          // Implicit: output final expression

이제 CJam을 때려! :) 제안을 환영합니다!

비경쟁 버전, 12 바이트

;Dv qU g1 ¬¸

1 월 11 일 부터 Japt에 멋진 새 기능을 추가 했습니다. 프로그램에 선행 쉼표가 포함되어 있으면 변수 ABCDEFGHIJL가 다양한 값으로 재정의됩니다. D로 설정 "QWERTYUIOP\nASDFGHJKL\nZXCVBNM"되었으므로 ;Dv여기에서 문자열을 교체 하기 에 충분합니다.


0

Gema, 56 자

?=@subst{\\A\*?=\;\?=\? ;qwertyuiop\nasdfghjkl\nzxcvbnm}

샘플 실행 :

bash-4.3$ echo -n 'f' | gema '?=@subst{\\A\*?=\;\?=\? ;qwertyuiop\nasdfghjkl\nzxcvbnm}'
g h j k l 
z x c v b n m 

0

8086 머신 코드 + DOS, 61 바이트

16 진 덤프 (오른쪽에 ASCII보기가 있음) :

B8 1E 01 8B F8 CD 21 B1 1F F2 AE 8B F7 AC 8A D0 ......!.........
B4 02 CD 21 80 E2 20 74 02 CD 21 E2 F0 C3 71 77 ...!.. t..!...qw
65 72 74 79 75 69 6F 70 0D 0A 61 73 64 66 67 68 ertyuiop..asdfgh
6A 6B 6C 0D 0A 7A 78 63 76 62 6E 6D 0D          jkl..zxcvbnm.

어셈블리 소스 코드 (Tasm으로 어셈블리 가능) :

    .MODEL TINY

    .CODE
    org 100h

    MAIN PROC

    mov ax, offset qwerty ; sets ah=1 (coincidence)
    mov di, ax      ; di points to the string
    int 21h         ; reads a char from keyboard into al

    mov cl, 31      ; cx is the length of the string
    repne scasb     ; look for the char
    mov si, di      ; si now points beyond the found char

myloop:
    lodsb           ; load a char
    mov dl, al
    mov ah, 2
    int 21h         ; output the char

    and dl, 20h     ; if it's a letter, set it to a space
    jz print_done   ; if it's not a letter, don't print a space
    int 21h         ; if it's a letter, print a space
print_done:
    loop myloop     ; repeat until end of string

    ret

qwerty db 'qwertyuiop',13,10,'asdfghjkl',13,10,'zxcvbnm',13

    MAIN ENDP
    END MAIN

두 가지 재미있는 점 :

  1. qwerty문자열 의 오프셋은 입니다 0x011e. 상위 바이트는 1이며 문자 입력을위한 DOS 기능 번호입니다. 코드에 1 바이트가 저장됩니다.
  2. 모든 소문자는 비트 5로 설정됩니다. ANDwith를 수행하면 0x20모두 공백으로 바뀌어 인쇄됩니다. 이전 문자가 줄 끝 바이트 인 경우 0으로 바뀌고 공간이 출력되지 않습니다. 이것은 0d 20 0a 20줄 끝에서 무의미한 순서를 피하기 위해 사용됩니다 .

가장 재미있는 것 :

일반적인 장소 (문자열의 시작) 대신 주소 0에서 시작하여 입력 크기 (프로그램 크기가 2 바이트 감소)를 검색하려고했습니다. 이것은 거의 효과가 있었다. 그러나 t코드 자체에는 바이트가 포함되어 있기 때문에 input에 실패했습니다 t(조건부 점프 인코딩의 일부로). 따라서 t몇 개의 정크 바이트를 출력합니다.

산출


0

𝔼𝕊𝕄𝕚𝕟, 32 자 / 79 바이트

⟦ɘƄ瀛ذ鸊ް΀ꀆဓƘ᳀ᘁ堍怍訁码聮Ęݠⶰ䀀#]ø⬭Čï⎖1

Try it here (Firefox only).

적어도 나는 char count에서 승리하고 있습니다 ... (Byte count는 다른 이야기입니다.)

예, 방금 색인 단축키를 ⎖1대신 구현했다는 것을 깨달았습니다 [1]. 바보 나!


이것이 무슨 언어 지? 또는 문자 그대로 이것입니다 : i.imgur.com/WC7XvYs.png (그리고 문서가 있습니다) 그것은 이상합니다, 아하!
ʰᵈˑ

이것은 ESMin입니다. 문자가 이중으로 표시되므로 문자를 보는 데 문제가있을 수 있습니다. github.com/molarmanful/ESMin (문서는 구식입니다)을 참조하십시오.
Mama Fun Roll

0

C ++, 129, 112 97 바이트

#include<string>
#include<cstdio>
void o(char c){puts(strstr("qwertyuiopasdfghjklzxcvbnm",&c));}

언 골프 드 :

#include<string>
#include<cstdio>
void o(char c)
{
    puts(strstr("qwertyuiopasdfghjklzxcvbnm",&c));
}

당신은 사용하여 17 바이트 면도 할 수 puts대신std::cout<<
DJMcMayhem

@DJMcMayhem 감사합니다! 훌륭한 요점 : 어떤 이유로 나는 여전히 #includefor 가 필요하다고 생각 puts했지만 분명히 그렇지는 않습니다!
Tas

또한 이것은 또 다른 12 짧습니다.
DJMcMayhem

감사! 난 모르는 strstr일이었다.
Tas

약간 오버 골프 인 것 같습니다. 당신이 필요 <stdio.h>합니다 strstr.
DJMcMayhem

0

배치, 206 + 2 = 208 바이트

지연 지연을 사용하므로을 사용하여 확장해야 CMD /V /C keyboard.cmd <letter>하므로 스위치에 1 2를 추가 해야 /V합니다.

@echo off
set a=q w e r t y u i o p
set b=a s d f g h j k l
set c=z x c v b n m
if not "!a:*%1 =!"=="!a!" echo !a:*%1 =!
if not "!a:*%1=!!b:*%1 =!"=="!a!!b!" echo !b:*%1 =!
if not %1==m echo !c:*%1 =!

POSIX 도구와 같이 명령 줄 옵션을 1로 cmd수락하면 1로 계산됩니다 /VC. 그러나 내가 아는 것처럼 /V자체 가 필요하며 /계산됩니다.
manatwork

0

파이썬, 109 바이트

나는 그것이 조금 큼을 알고 있지만 지금은 내가해야 할 모든 것을 알고 있습니다!

def kb(c): 
 s = "q w e r t y u i o p \n a s d f g h j k l \n z x c v b n m"
 a = s.split(c)
 print(a[1])

kb()마지막에 전화가 필요하다고 생각하지 않습니다 . 기능을 정의하는 것으로 충분합니다. 또한 1 개의 들여 쓰기 공간으로 충분합니다. 이러한 변경을 수행 한 후이 사이트를 사용하여 108 바이트를 얻습니다 .
ETHproductions

@ETHproductions 와우 나는 한 번 우주 일을 몰랐다. (파이썬이 처음 임). 도와 주셔서 감사합니다!
Ashwin Gupta

0

배쉬, 80 바이트

x="qwertzuiop\nasdfghjkl\nyxcvbnm"&&echo -e ${x#*$1}|sed 's/./& /g'

직접 시도해보십시오. $ 1 을 원하는 문자로 바꾸 거나 #! / bin / bash 스크립트를 만드십시오.

cygwin의 샘플은 다음과 같습니다.

$x="qwertzuiop\nasdfghjkl\nyxcvbnm"&&echo -e ${x#*q}|sed 's/./& /g'
w e r t z u i o p
a s d f g h j k l
y x c v b n m

$x="qwertzuiop\nasdfghjkl\nyxcvbnm"&&echo -e ${x#*m}|sed 's/./& /g'

$x="qwertzuiop\nasdfghjkl\nyxcvbnm"&&echo -e ${x#*h}|sed 's/./& /g'
j k l
y x c v b n m

가장 짧지는 않지만 여전히 자랑 스럽습니다!

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