Keluarkan keyboard qwerty


37

Diberikan karakter, output (ke layar) seluruh tata letak keyboard qwerty (dengan spasi dan baris baru) yang mengikuti karakter. Contoh-contoh membuatnya jelas.

Input 1

f

Keluaran 1

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

Input 2

q

Keluaran 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

Input 3

m

Keluaran 3

(Program berakhir tanpa hasil)

Masukan 4

l

Keluaran 4

z x c v b n m

Kode terpendek menang. (dalam byte)

PS

Baris baru ekstra, atau ruang ekstra di akhir baris diterima.


Apakah fungsi cukup atau Anda memerlukan program lengkap yang membaca / menulis ke stdin / stdout?
agtoever

1
@ agtoever Sesuai meta.codegolf.stackexchange.com/questions/7562/… , itu diizinkan. Namun, fungsi tetap harus ditampilkan ke layar.
ghosts_in_the_code


1
Apakah memimpin ruang sebelum garis diizinkan?
Sahil Arora

1
@SahilArora Tidak.
ghosts_in_the_code

Jawaban:


19

CJam, 42 40 byte

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

Uji di sini.

Penjelasan

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

Apa e#? Apakah itu sintaks CJam untuk komentar? Terima kasih sebelumnya.
AL

@AL ya itu.
Martin Ender

11

Pyth, 33 byte

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

Perhatikan bahwa beberapa karakter tidak dapat dicetak. Cobalah online di Pyth Compiler .

Bagaimana itu bekerja

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.

Aduh, saya baru saja membuat program Pyth pertama saya (hanya 38 byte!), Lalu Anda datang ... +1 BTW, saya pikir \ setara dengan d.
ETHproduk

Ups, kurasa tidak sama ... apa bedanya?
ETHproduk

1
@ ETHproductions @ Dennis Alasan yang sama mengapa md5tidak menghasilkan 5 spasi. dadalah variabel default yang diputar melalui argumen iterable dari operator peta. Dan jL\ <list>hanyalah jalan pintas untuk operator peta mj\ d<list>.
Jakube

1
@ Jakube Oh, itu masuk akal. Terima kasih!
Dennis

10

Perl, 56 byte

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

Menghitung shebang sebagai 3, input diambil dari stdin. Jika sebuah baris baru terkemuka bukan masalah input pdan l, maka /$_\n?/bisa diganti dengan bare $_to save 4.


Contoh Penggunaan

$ 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
Terima kasih telah mengajari saya tentang\K !
Dom Hastings

@HomHastings dalam kasus ini, itu tidak benar-benar diperlukan untuk jumlah byte, s/.\B/$& /gakan bekerja dengan baik. Contoh yang lebih baik .
primo

6

GS2 , 38 37 byte

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

Kode sumber menggunakan pengkodean CP437 . Cobalah online!

Uji coba

$ 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

Bagaimana itu bekerja

♦                                      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

Hitung naik 5 byte, tetapi lebih benar! Terima kasih @ 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());}

Tidak bermain golf

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]

Gunakan teknik yang sama dengan jawaban lainnya. Saran diterima!


Bisakah Anda jelaskan mengapa Anda menggunakan "...". Saya mencoba tanpa JSFiddle dan masih bekerja?
Awashi

@Awashi Ini adalah operator penyebaran . Ini memisahkan string menjadi array karakter. Tanpanya itu .join` `tidak akan melakukan apa-apa dan tidak akan ada ruang dalam hasilnya.
user81655

@ user81655 Tank you
Awashi

4

Ruby, 63 57 byte

Mengambil karakter sebagai argumen baris perintah: ruby keyboard.rb e

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

4

TeaScript , 50 45 44 byte

TeaScript adalah JavaScript untuk bermain golf.

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

Tanpa penjelasan dan penjelasan

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

Jika baris baru terkemuka tidak diizinkan saat parameternya patau l, maka 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 karakter

(58 karakter kode + 1 opsi opsi perintah karakter.)

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

Contoh dijalankan:

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 /./,'\& '

Ruang ekstra setelahnya m adalah untuk mencegah program mogok jika inputnya adalah 'm'.

Terima kasih kepada @manatwork untuk ~ 16 byte tips


Biar saya tebak ... Terlalu banyak pengkodean Python dalam waktu terakhir?
manatwork

1
Beberapa perubahan sintaks kecil: ARGV$*; each_charchars; do.. end{.. }; printf$><<+ %akan menyebabkan ini: "qwertyuiop↵asdfghjkl↵zxcvbnm".split($*[0])[1].chars{|i|$><<"%s "%i}. Lebih banyak di Tips untuk bermain golf di Ruby .
manatwork

@manatwork Pertama kali mencoba bermain golf di Ruby, terima kasih atas tips / tautannya!
SnoringFrog

1
Saya melihat Anda tidak mendapat petunjuk dalam komentar pertama saya. Di Ruby tidak perlu untuk kuotasi rangkap tiga di sekitar string multiline. (Sebenarnya saya tidak tahu sampai sekarang bahwa itu diterima oleh Ruby.)
manatwork

1
Ruang terdepan dalam output cukup jelek. Seperti .di ekspresi reguler tidak cocok \nsecara default, lebih baik menggunakan itu untuk jarak yang: puts"qwertyuiop↵asdfghjkl↵zxcvbnm ".split($*[0])[1].gsub(/./,'\& '). Padahal panjang kode akan tetap sama.
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)];

Membutuhkan -Fopsi baris perintah, dihitung sebagai 3. Pengaturan default .ini diasumsikan (Anda dapat menonaktifkan .ini lokal Anda dengan -n).


Contoh Penggunaan

$ 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

Sunting: Potong 20 byte dengan tips dari @Fatalize

Kode

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

Penjelasan

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

Contohnya

>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

Menggunakan SWI-Prolog, Anda dapat mempersingkat atom_codesbagian dengan menggunakan backquotes yang membatasi kode string (sehingga Anda bisa langsung mengganti L dalam panggilan bdengan string).
Fatalkan

@Sangat keren! Karena saya menggunakan SWI-Prolog untuk pengujian, itu sepertinya ide yang bagus.
Emigna

Juga, menggunakan b([A,_|T],[H]):-A=H,writef('%s',[T]);b(T,[H]).bukannya 2 aturan berbeda untukb adalah 7 byte lebih pendek. Biasanya, selalu lebih pendek untuk menggabungkan semua aturan menjadi satu dengan OR ;alih-alih menulis beberapa aturan, karena Anda menghindari mengulangi nama dan parameter predikat dan Anda menghindari pemberian baris juga;)
Fatalize

Sudah begitu lama sejak saya mempelajari Prolog sehingga saya benar-benar lupa bahwa Anda bisa ATAU menyukainya. Tip yang bagus! Terima kasih :)
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$\<

Ini telah diuji di sini: Befunge-93 Interpreter .

Bagaimana itu bekerja

  • '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' didorong pada tumpukan.
  • Jumlah nilai yang harus dibuang (hardcode pada @ZVD0FHJ:LNP^\<>,2B48X.T6R ) N didorong.
  • Nilai N pertama dibuang dan nilai sisanya dicetak.

Catatan

Saya memilih pengkodean sehingga string dimulai dengan @ untuk tumpang tindih dengan program. String ini dihasilkan dengan kode python berikut:

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
Jawaban pertama yang bagus! Selamat datang di Code Golf SE. (Saya juga baru.)
ghosts_in_the_code

1

Gondong - 102 Bytes

Skrip golf:

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

Tidak dikumpulkan dan berkomentar:

 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.

Aturan yang memungkinkan baris baru tambahan menyelamatkan saya hampir 10 byte ...


1

Java - 107 byte

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

Tidak digabungkan dengan pembacaan kelas pembungkus dari 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 "));
    }
}

Jika spasi pada awal baris dapat diterima, kita bisa turun ke 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])

Mengambil input sebagai string atau karakter. Pisahkan string pada input dan cetak semuanya setelah perpecahan.

(Pertama kali bermain golf, harap bersikap lembut: P)

EDIT: Tidak melihat spasi tambahan yang diperlukan antar karakter, ditambahkan sekarang

EDIT 2: Dimodifikasi menjadi fungsi lambda anonim dan menghapus split split tambahan, menghemat 4 byte


Selamat datang di PPCG! Saya pikir Anda tidak perlu spasi setelahnya print, tetapi sepertinya ini tidak mencetak spasi di antara setiap pasangan huruf.
Martin Ender

Tidak dapat memberikan referensi sekarang, tetapi ketika penerjemah membutuhkan pemformatan tambahan dari input, itu juga termasuk dalam hitungan. (Koreksi saya jika saya salah, tapi saya pikir ini hanya berfungsi jika input dilewatkan bersama dengan tanda kutip yang dikelilingi, seperti "f".)
manatwork

Golf pertama yang bagus. Fungsi diperbolehkan secara default, bahkan yang anonim, jadi lebih pendek untuk melakukan ini sebagai lambda s:.... Saya pikir perpecahan tidak perlu arg 1, karena karakter hanya muncul sekali. Ini menghasilkan spasi pada awal baris berikutnya, tidak yakin apakah itu diizinkan.
xnor

1

Rubi, 59 57 67 byte

Menambahkan spasi antar huruf

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

Ini gagal pada input "m". Itu dapat dengan mudah diperbaiki dengan mengubah indeks array dari -1 ke 1, tetapi kemudian pada input "m" akan dihasilkan nil. Yang bukan masalah itu sendiri, tetapi akan menyebabkan Anda masalah saat menyelesaikan kode Anda untuk menambahkan spasi di antara huruf-huruf.
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])}

(tidak perlu di ruang setelah char pertama, karena tidak pernah sampai ke output)

Memperingatkan keyboard saat Anda menelepon s("some letter"). Bisa juga dibuat dengan document.write()atau console.log(), tapi hei, ini lebih lama: P

Demo:

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
Anda mungkin bisa menyimpan beberapa byte hanya dengan menggunakan \nalih-alih ;dalam string dan menyingkirkan penggantian.
Produksi ETH

@ Tentu, terima kasih! Saya memang menggunakan penggantian, karena pada awalnya, tanpa menghitung jeda baris, penggantian akan mempersingkat. Kemudian saya perhatikan bahwa garis putus harus ada di sana, jadi saya telah menggunakan ganti lagi. Bahkan tidak berpikir itu bisa membuat kode lebih lama: 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))

Tidak Disatukan:

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

Saya baru di sini, baru saja menemukan situs ini. Tidak tahu apakah saya sudah memposting dengan benar atau jika T-SQL diizinkan tetapi saya tahu prosedur di atas berfungsi.


1

O 2.2, 48 46 karakter

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

Contoh dijalankan:

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

O, 61 karakter

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

Contoh dijalankan:

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

Ini tidak bekerja pada IDE karena suatu alasan, melihat ke dalamnya sekarang ...
fase

"qwertyuiop\nasdfghjkl\nzxcvbnm\n"i/r;s{n.'\n=ST?}dhanya bekerja pada penerjemah baru tetapi 51 byte.
fase

Permalink adalah ... pekerjaan yang sedang berjalan: P
fase

Yup, dalam direktori libregexp
fase

git klon repo, lalu git submodule update --init, lalumake
fase

1

Japt , 49 42 41 40 38 byte

Japt adalah versi singkat dari Ja vaScri pt . Penerjemah

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

The ?harus menjadi tak patut ditulis Unicode Char U + 0086.

Bagaimana itu bekerja

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

Sekarang mengalahkan CJam! :) Saran diterima!

Versi yang tidak bersaing, 12 byte

;Dv qU g1 ¬¸

Pada 11 Januari, saya telah menambahkan fitur baru yang keren ke Japt: Jika program berisi koma terkemuka, variabel ABCDEFGHIJLdidefinisikan ulang ke berbagai nilai. Ddiatur ke "QWERTYUIOP\nASDFGHJKL\nZXCVBNM", jadi ;Dvcukup untuk mengganti string di sini.


0

Gema, 56 karakter

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

Contoh dijalankan:

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 kode mesin + DOS, 61 byte

Hexdump (dengan tampilan ASCII di sebelah kanan):

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.

Kode sumber assembly (dapat dirakit dengan 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

Dua hal menyenangkan di sini:

  1. Offset dari qwerty string adalah 0x011e. Byte atasnya adalah 1, yang merupakan nomor fungsi DOS untuk input karakter. Ini menghemat 1 byte dalam kode.
  2. Semua huruf kecil memiliki bit 5 set. Ketika melakukan ANDdengan 0x20, mereka semua berubah menjadi ruang, yang kemudian dicetak. Jika char sebelumnya adalah byte end-of-line, itu akan berubah menjadi 0, dan tidak ada ruang yang dihasilkan. Ini digunakan untuk menghindari urutan yang tidak masuk akal0d 20 0a 20 di ujung garis.

Satu hal yang hampir menyenangkan:

Saya mencoba mencari input char mulai dari alamat 0 (yang mengurangi ukuran program sebesar 2 byte), bukan tempat yang biasa (mulai dari string). Ini hampir berhasil; Namun, gagal untuk input t, karena kode itu sendiri berisi byte t(sebagai bagian dari pengkodean lompatan bersyarat). Jadi untuk t, itu akan menghasilkan beberapa byte sampah:

keluaran


0

𝔼𝕊𝕄𝕚𝕟, 32 karakter / 79 byte

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

Try it here (Firefox only).

Setidaknya aku menang dalam hitungan char ... (Byte count adalah cerita yang berbeda.)

Oh ya, baru menyadari bahwa saya menerapkan cara pintas indeks ( ⎖1bukan [1]) kembali. Saya konyol!


Bahasa apa ini? atau apakah ini benar-benar ini: i.imgur.com/WC7XvYs.png (dan apakah ada dokumentasi) itu aneh, aha!
ʰᵈˑ

Ini ESMin. Surat berada di doublestruck, sehingga Anda mungkin mengalami kesulitan melihatnya. Lihat github.com/molarmanful/ESMin (namun, dokumen sudah usang).
Mama Fun Roll

0

C ++, 129, 112 97 byte

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

Tidak Disatukan:

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

Anda dapat mengurangi 17 byte dengan menggunakan putsalih-alihstd::cout<<
DJMcMayhem

@DJMcMayhem Terima kasih! Poin yang sangat bagus: untuk beberapa alasan saya pikir saya masih membutuhkan#include untuk puts, tapi jelas aku tidak!
Tas

Juga ini adalah 12 lebih pendek.
DJMcMayhem

Terima kasih! Aku bahkan tidak tahustrstr apa-apa.
Tas

Saya pikir itu sedikit berlebihan. Anda perlu <stdio.h>untuk strstr.
DJMcMayhem

0

Batch, 206 + 2 = 208 byte

Karena ini menggunakan ekspansi yang tertunda Anda harus memohonnya CMD /V /C keyboard.cmd <letter>, jadi tambahkan 1 2 untuk /Vsakelar.

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

Saya khawatir opsi baris perintah akan dihitung 1 jika cmdmau menerimanya /VC, seperti yang dilakukan alat POSIX. Tapi seperti yang saya tahu /Vmembutuhkannya sendiri /, yang juga dihitung.
manatwork

0

Python, 109 byte

Saya tahu ini agak besar tetapi semua yang saya tahu harus saya lakukan sekarang!

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

Saya pikir Anda tidak perlu menelepon kb()pada akhirnya; mendefinisikan fungsi sudah cukup. Juga, 1 ruang lekukan sudah cukup. Setelah melakukan perubahan ini, saya mendapatkan 108 byte, menggunakan situs ini .
Produksi ETH

@ ETHproductions wow saya tidak tahu hal ruang sekali. (Baru menggunakan python). Sekali lagi terima kasih atas bantuan Anda!
Ashwin Gupta

0

Bash, 80 byte

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

Cobalah sendiri, ganti $ 1 dengan karakter yang diinginkan atau buat skrip #! / Bin / bash.

Berikut beberapa contoh dari 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

Ini bukan yang terpendek, tapi saya masih bangga akan hal itu!

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.