Xuất bàn phím qwerty


37

Đưa ra một ký tự, xuất (ra màn hình) toàn bộ bố cục bàn phím qwerty (có khoảng trắng và dòng mới) theo sau ký tự. Các ví dụ làm cho nó rõ ràng.

Đầu vào 1

f

Đầu ra 1

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

Đầu vào 2

q

Đầu ra 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

Đầu vào 3

m

Đầu ra 3

(Chương trình chấm dứt mà không có đầu ra)

Đầu vào 4

l

Đầu ra 4

z x c v b n m

Mã ngắn nhất sẽ thắng. (tính bằng byte)

PS

Dòng mới bổ sung hoặc khoảng trắng thừa ở cuối dòng được chấp nhận.


Là một chức năng đủ hay bạn yêu cầu một chương trình đầy đủ đọc / ghi vào stdin / stdout?
bất cứ lúc nào

1
@agtoever Theo meta.codegolf.stackexchange.com/questions/7562/ , nó được cho phép. Tuy nhiên, chức năng vẫn phải xuất ra màn hình.
ghosts_in_the_code

@agtoever Hãy thử liên kết này thay thế. meta.codegolf.stackexchange.com/questions/2419/ từ
ghosts_in_the_code

1
là không gian hàng đầu trước khi một dòng cho phép?
Sahil Arora

1
@SahilArora Không.
ghosts_in_the_code

Câu trả lời:


19

CJam, 42 40 byte

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

Kiểm tra nó ở đây.

Giải trình

"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#gì Đây có phải là cú pháp của CJam cho một bình luận? Cảm ơn trước.
AL

@AL đúng vậy.
Martin Ender

11

Bình thường, 33 byte

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

Lưu ý rằng một số ký tự không thể in được. Hãy thử trực tuyến trong Trình biên dịch Pyth .

Làm thế nào nó hoạt động

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.

Ôi trời, tôi vừa mới tạo chương trình Pyth đầu tiên của mình từ trước đến nay (chỉ 38 byte!), Sau đó bạn đã xuất hiện ... +1 BTW, tôi nghĩ \ là tương đương với d.
Sản xuất ETH

Rất tiếc, tôi đoán nó không giống nhau ... có gì khác nhau?
Sản xuất ETH

1
@ETHproductions @Dennis Cùng một lý do tại sao md5không tạo ra 5 khoảng trắng. dlà biến mặc định lặp lại thông qua đối số lặp của toán tử bản đồ. Và jL\ <list>chỉ đơn giản là một phím tắt cho toán tử bản đồ mj\ d<list>.
Jakube

1
@Jakube Oh, điều đó có ý nghĩa. Cảm ơn!
Dennis

10

Perl, 56 byte

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

Đếm shebang là 3, đầu vào được lấy từ stdin. Nếu một dòng mới hàng đầu không phải là mối quan tâm cho đầu vào plsau đó /$_\n?/có thể được thay thế bằng mức trần $_để tiết kiệm 4.


Sử dụng mẫu

$ 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
Cảm ơn bạn đã dạy tôi về\K !
Dom Hastings

@DomHastings trong trường hợp này, nó không thực sự cần thiết cho số byte, s/.\B/$& /gsẽ hoạt động tốt như nhau. Một ví dụ tốt hơn .
primo

6

GS2 , 38 37 byte

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

Mã nguồn sử dụng mã hóa CP437 . Hãy thử trực tuyến!

Chạy thử nghiệm

$ 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

Làm thế nào nó hoạt động

♦                                      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 byte 105 110

Đếm tăng 5 byte, nhưng đúng hơn! Cảm ơn @ 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());}

Không chơi gôn

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

JavaScript (ES6), 60 byte

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

Sử dụng kỹ thuật tương tự như hầu hết các câu trả lời khác. Gợi ý chào mừng!


Bạn có thể giải thích tại sao bạn sử dụng "...". Tôi thử mà không có trên JSFiddle và vẫn hoạt động?
Awashi

@Awashi Đó là một toán tử lây lan . Nó tách chuỗi thành một mảng các ký tự. Không có nó, .join` `sẽ không có gì và sẽ không có khoảng trống trong kết quả.
dùng81655

@ user81655 Tank bạn
Awashi

4

Ruby, 63 57 byte

Lấy ký tự làm đối số dòng lệnh: ruby keyboard.rb e

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

4

TeaScript , 50 45 44 byte

TeaScript là JavaScript để chơi gôn.

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

Ung dung và giải thích

`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

JavaScript ES6, 73

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

Nếu một dòng mới hàng đầu không được phép khi tham số là phoặc l, thì 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 ký tự

(Mã 58 ký tự + 1 ký tự tùy chọn dòng lệnh.)

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

Chạy mẫu:

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

Ruby, 86 87 83 71 66

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

Không gian thêm sau mlà để ngăn chương trình bị sập nếu đầu vào là 'm'.

Cảm ơn @manatwork cho ~ 16 byte lời khuyên


Hãy để tôi đoán rằng Quá nhiều mã hóa Python trong thời gian qua?
manatwork

1
Một số thay đổi cú pháp nhỏ: ARGV$*; each_charchars; do.. end{.. }; printf$><<+ %sẽ dẫn đến điều này : "qwertyuiop↵asdfghjkl↵zxcvbnm".split($*[0])[1].chars{|i|$><<"%s "%i}. Thông tin thêm về Mẹo chơi gôn trong Ruby .
manatwork

@manatwork Lần đầu tiên thử chơi golf trong Ruby, cảm ơn vì những lời khuyên / liên kết!
SnoringFrog

1
Tôi thấy bạn đã không có gợi ý trong bình luận đầu tiên của tôi. Trong Ruby không cần ba dấu ngoặc kép xung quanh chuỗi đa dòng. (Trên thực tế tôi không có ý tưởng nào cho đến bây giờ rằng nó được Ruby chấp nhận.)
manatwork

1
Các không gian hàng đầu trong đầu ra là khá xấu xí. Như .trong biểu thức chính quy không khớp \ntheo mặc định, sử dụng tốt hơn cho khoảng cách : puts"qwertyuiop↵asdfghjkl↵zxcvbnm ".split($*[0])[1].gsub(/./,'\& '). Mặc dù độ dài mã sẽ giữ nguyên.
manatwork

2

PHP, 88 byte

<?=$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)];

Yêu cầu -Ftùy chọn dòng lệnh, được tính là 3. Cài đặt .ini mặc định được giả sử (bạn có thể tắt .ini cục bộ của mình với -n).


Sử dụng mẫu

$ 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

Prolog (SWI), 153 133 byte

Chỉnh sửa: Cắt 20 byte với các mẹo từ @Firthize

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),!.

Giải trình

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

Ví dụ

>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

Sử dụng SWI-Prolog, bạn có thể rút ngắn atom_codesphần này bằng cách sử dụng các backquote để phân định mã chuỗi (để bạn có thể thay thế L trực tiếp trong lệnh gọi bbằng chuỗi).
Gây tử vong vào

@ Sinh ra mát mẻ! Vì tôi đang sử dụng SWI-Prolog để thử nghiệm, nghe có vẻ là một ý tưởng tuyệt vời.
Emigna

Ngoài ra, sử dụng b([A,_|T],[H]):-A=H,writef('%s',[T]);b(T,[H]).thay vì 2 quy tắc khác nhau bngắn hơn 7 byte. Thông thường, sẽ luôn ngắn hơn để hợp nhất tất cả các quy tắc thành một quy tắc duy nhất với OR ;thay vì viết nhiều quy tắc, vì bạn tránh lặp lại tên và tham số của vị từ và bạn cũng tránh một nguồn cấp dữ liệu;)
Fatalize

Đã quá lâu kể từ khi tôi học Prolog đến nỗi tôi đã hoàn toàn quên rằng bạn có thể HOẶC như thế. Mẹo tuyệt vời! Cảm ơn :)
Emigna

2

Befunge, 122 byte

"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$\<

Nó đã được thử nghiệm ở đây: Phiên dịch Befunge-93 .

Làm thế nào nó hoạt động

  • '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' được đẩy vào ngăn xếp.
  • Số lượng giá trị cần loại bỏ (mã hóa cứng @ZVD0FHJ:LNP^\<>,2B48X.T6R) N được đẩy.
  • Các giá trị N đầu tiên bị loại bỏ và các giá trị còn lại được in.

chú thích

Tôi đã chọn mã hóa để chuỗi bắt đầu với @trùng lặp với chương trình. Chuỗi này được tạo với mã python sau:

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
Câu trả lời đầu tiên tốt! Chào mừng bạn đến với Code Golf SE. (Tôi cũng mới.)
ghosts_in_the_code

1

Quai bị - 102 byte

Kịch bản đánh gôn:

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 và bình luận:

 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.

Quy tắc cho phép thêm các dòng mới giúp tôi tiết kiệm được gần 10 byte ...


1

Java - 107 byte

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

Vô dụng với cách đọc lớp bọc từ System.in

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

Nếu khoảng trắng ở đầu dòng được chấp nhận, chúng ta có thể giảm xuống còn 99 byte:

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

1

Python 2, 58 67 63 byte ##

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

Đưa đầu vào dưới dạng chuỗi hoặc char. Tách chuỗi ở đầu vào và in ra mọi thứ sau khi tách.

(Lần đầu chơi gôn, vui lòng nhẹ nhàng: P)

EDIT: Không thấy khoảng trắng bổ sung cần thiết giữa các ký tự, được thêm ngay bây giờ

EDIT 2: Được sửa đổi thành một hàm lambda ẩn danh và loại bỏ đối số phân tách bổ sung, tiết kiệm 4 byte


Chào mừng đến với PPCG! Tôi không nghĩ rằng bạn cần không gian sau print, nhưng có vẻ như điều này không in khoảng trắng giữa mỗi cặp chữ cái.
Martin Ender

Không thể cung cấp một tài liệu tham khảo ngay bây giờ, nhưng khi trình thông dịch yêu cầu định dạng bổ sung của đầu vào, điều đó cũng được bao gồm trong số đếm. (Sửa lỗi cho tôi nếu tôi sai, nhưng tôi nghĩ rằng điều này chỉ hoạt động nếu đầu vào được chuyển cùng với các trích dẫn được bao quanh, như "f".)
manatwork

Sân golf đầu tiên đẹp. Các chức năng được cho phép theo mặc định, ngay cả những chức năng ẩn danh, do đó, nó ngắn hơn để làm điều này như lambda s:.... Tôi nghĩ rằng sự phân chia không cần phải tranh cãi 1, vì nhân vật chỉ xuất hiện một lần. Điều này tạo ra khoảng trắng khi bắt đầu các dòng thành công, không chắc điều đó có được phép hay không.
xnor

1

Hồng ngọc 59 57 67 byte

Đã thêm khoảng trắng giữa các chữ cái

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

Điều này không thành công trên đầu vào mv. Điều đó có thể dễ dàng khắc phục bằng cách thay đổi chỉ số mảng từ -1 thành 1, nhưng sau đó, đầu vào sẽ có kết quả nil. Bản thân nó không phải là vấn đề, nhưng sẽ gây ra sự cố cho bạn khi hoàn tất mã của bạn để thêm khoảng trắng giữa các chữ cái.
manatwork

1

JavaScript, 88 byte

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])}

(không cần trong không gian sau char đầu tiên, vì nó không bao giờ đạt được đầu ra)

Cảnh báo bàn phím khi bạn gọi s("some letter"). Cũng có thể được thực hiện với document.write()hoặc console.log(), nhưng hey, nó dài hơn: P

Bản giới thiệu:

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
Bạn có thể có thể lưu một vài byte bằng cách chỉ sử dụng \nthay vì ;trong chuỗi và loại bỏ thay thế.
Sản xuất ETH

@Eth Chắc chắn, cảm ơn! Tôi đã sử dụng thay thế, bởi vì lúc đầu, không tính các ngắt dòng, thay thế sẽ rút ngắn. Sau đó, tôi nhận thấy rằng các ngắt dòng sẽ ở đó, vì vậy tôi đã sử dụng thay thế một lần nữa. Thậm chí không nghĩ rằng nó có thể làm cho mã dài hơn: D
nicael

1

SQL (MS T-SQL), 172 byte

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

Ung dung:

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ôi mới ở đây, chỉ mới phát hiện ra trang web này. Không biết tôi đã đăng chính xác hay nếu T-SQL được cho phép nhưng tôi biết quy trình trên hoạt động.


1

O 2.2, 48 46 ký tự

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

Chạy mẫu:

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

Ô, 61 ký tự

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

Chạy mẫu:

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

Điều này không hoạt động trên IDE vì một số lý do, nhìn vào nó ngay bây giờ ...
giai đoạn

"qwertyuiop\nasdfghjkl\nzxcvbnm\n"i/r;s{n.'\n=ST?}dchỉ hoạt động trên trình thông dịch mới nhưng là 51 byte.
giai đoạn

Các permalinks là ... một công việc đang tiến triển: P
giai đoạn

Yup, trong thư mục libregapi
giai đoạn

git nhân bản repo, sau đó git submodule update --init, sau đómake
giai đoạn

1

Japt , 49 42 41 40 38 byte

Japt là phiên bản rút gọn của Ja vaScri pt . Thông dịch viên

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

Các ?nên là chưa in ra Unicode char U + 0086.

Làm thế nào nó hoạt động

          // 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

Bây giờ đánh bại CJam! :) Gợi ý chào mừng!

Phiên bản không cạnh tranh, 12 byte

;Dv qU g1 ¬¸

Kể từ ngày 11 tháng 1, tôi đã thêm một tính năng mới thú vị vào Japt: Nếu chương trình chứa dấu phẩy hàng đầu, các biến ABCDEFGHIJLđược xác định lại thành các giá trị khác nhau. Dđược đặt thành "QWERTYUIOP\nASDFGHJKL\nZXCVBNM", vậy ;Dvlà đủ để thay thế chuỗi ở đây.


0

Gema, 56 ký tự

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

Chạy mẫu:

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

Mã máy 8086 + DOS, 61 byte

Hexdump (với chế độ xem ASCII ở bên phải):

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.

Mã nguồn hội (có thể được lắp ráp bằng 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

Hai điều thú vị ở đây:

  1. Phần bù của qwertychuỗi là 0x011e. Byte trên của nó là 1, là số chức năng của DOS cho đầu vào ký tự. Điều này tiết kiệm 1 byte trong mã.
  2. Tất cả các chữ cái viết thường có bit 5 được đặt. Khi thực hiện ANDvới 0x20, tất cả chúng được biến thành một khoảng trắng, sau đó được in ra. Nếu char trước đó là byte cuối dòng, nó sẽ được chuyển thành 0 và không có khoảng trắng nào được xuất ra. Điều này được sử dụng để tránh các chuỗi vô nghĩa 0d 20 0a 20ở cuối dòng.

Một điều gần như thú vị:

Tôi đã cố gắng tìm kiếm char đầu vào bắt đầu từ địa chỉ 0 (làm giảm kích thước chương trình xuống 2 byte), thay vì vị trí thông thường (bắt đầu chuỗi). Điều này gần như đã làm việc; tuy nhiên, nó không thành công cho đầu vào t, vì bản thân mã chứa byte t(như một phần mã hóa của bước nhảy có điều kiện). Vì vậy t, nó sẽ xuất ra một vài byte rác:

đầu ra


0

, 32 ký tự / 79 byte

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

Try it here (Firefox only).

Ít nhất là tôi chiến thắng trong số char ... (Byte tính là một câu chuyện khác.)

Ồ vâng, chỉ cần nhận ra rằng tôi đã thực hiện các phím tắt chỉ mục ( ⎖1thay vì [1]) một lúc sau. Tôi ngớ ngẩn quá!


Ngôn ngữ này là gì? hoặc theo đúng nghĩa đen của nó: i.imgur.com/WC7XvYs.png (và có tài liệu) thật kỳ lạ, aha!
ʰᵈˑ

Đây là ESMin. Thư nằm trong doublestruck, vì vậy bạn có thể gặp khó khăn khi nhìn thấy chúng. Xem github.com/molarmanful/ESMin (mặc dù tài liệu đã lỗi thời).
Mama Fun Roll

0

C ++, 129, 112 97 byte

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

Ung dung:

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

Bạn có thể tắt 17 byte bằng cách sử dụng putsthay vìstd::cout<<
DJMcMayhem

@DJMcMayhem Cảm ơn! Một điểm tuyệt vời: đối với một số lý do tôi nghĩ rằng tôi vẫn sẽ cần một #includecho puts, nhưng rõ ràng là tôi không!
TAS

Ngoài ra, đây là 12 ngắn hơn.
DJMcMayhem

Cảm ơn! Tôi thậm chí không biết strstrlà một điều.
TAS

Tôi nghĩ rằng đó là một chút quá mức. Bạn cần <stdio.h>cho strstr.
DJMcMayhem

0

Hàng loạt, 206 + 2 = 208 byte

Bởi vì điều này sử dụng mở rộng bị trì hoãn, bạn cần phải gọi nó với CMD /V /C keyboard.cmd <letter>, vì vậy thêm 1 2 cho /Vchuyển đổi.

@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 =!

Tôi e rằng tùy chọn dòng lệnh sẽ tính 1 nếu cmdchấp nhận nó /VC, giống như các công cụ POSIX. Nhưng như tôi biết /Vđòi hỏi của riêng nó /, cũng được tính.
manatwork

0

Python, 109 byte

Tôi biết nó hơi lớn nhưng đó là tất cả những gì tôi biết phải làm ngay bây giờ!

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])

Tôi không nghĩ rằng bạn cần cuộc gọi đến kb()cuối; xác định hàm là đủ. Ngoài ra, 1 không gian thụt là đủ. Sau khi thực hiện những thay đổi này, tôi nhận được 108 byte, sử dụng trang web này .
Sản phẩm ETH

@ETHproductions wow Tôi không biết rằng một lần không gian. (Mới đối với trăn). Cảm ơn một lần nữa vì sự giúp đỡ của bạn!
Ashwin Gupta

0

Bash, 80 byte

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

Hãy tự thử, thay thế $ 1 bằng ký tự mong muốn hoặc tạo tập lệnh #! / Bin / bash.

Dưới đây là một số mẫu từ 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

Nó không phải là ngắn nhất, nhưng tôi vẫn tự hào về nó!

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.