Qwerty klavyesini çıktı


37

Bir karakter verildiğinde, karakteri takip eden tüm qwerty klavye düzenini (boşluklar ve yeni satırlar ile birlikte) çıktı (ekrana). Örnekler bunu açıkça ortaya koyuyor.

Giriş 1

f

Çıkış 1

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

Giriş 2

q

Çıkış 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

Giriş 3

m

Çıkış 3

(Program çıktı olmadan sona eriyor)

Giriş 4

l

Çıkış 4

z x c v b n m

En kısa kod kazanır. (bayt cinsinden)

PS

Ekstra yeni satırlar veya satır sonunda ek boşluklar kabul edilir.


Bir fonksiyon yeterli mi yoksa stdin / stdout'a okuyan / yazan tam bir program mı istiyorsunuz?
agtoever

1
başına As @agtoever meta.codegolf.stackexchange.com/questions/7562/... , bu izin verilir. Ancak, işlev hala ekrana gönderilmelidir.
ghosts_in_the_code 24:15

@ agtoever Bunun yerine bu linki deneyin. meta.codegolf.stackexchange.com/questions/2419/…
ghosts_in_the_code

1
bir çizgiden önce boşluk bırakılabilir mi?
Sahil Arora

1
@SahilArora Hayır.
ghosts_in_the_code

Yanıtlar:


19

CJam, 42 40 bayt

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

Burada test et.

açıklama

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

Nedir e#? Yorum yapmak için CJam sözdizimi mi var? Şimdiden teşekkürler.
AL

@AL evet öyle.
Martin Ender

11

Pyth, 33 bayt

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

Bazı karakterlerin yazdırılamaz olduğuna dikkat edin. Pyth Compiler'da çevrimiçi olarak deneyin .

Nasıl çalışır

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.

Ah, şimdiye kadarki ilk Pyth programımı daha yeni yaratmıştım (sadece 38 byte!), Sonra geldin ... +1 BTW, buna \ eşdeğer d.
ETHProductions

Hata! Sanırım aynı değil ... farklı olan ne?
ETHProductions

1
@ETHproductions @Dennis Aynı neden md55 boşluk üretmiyor. dharita operatörünün yinelenebilir argümanı ile yinelenen varsayılan değişkendir. Ve jL\ <list>sadece harita operatörü için bir kısayol mj\ d<list>.
Jakube

1
@ Jakube Ah, bu mantıklı. Teşekkürler!
Dennis

10

Perl, 56 bayt

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

Shebang'ı 3 olarak sayarak girdi stdin'den alınmıştır. Önde gelen bir yeni satır girdiler için bir endişe kaynağı değilse pve lo zaman 4 tasarruf için /$_\n?/bir çıplak ile değiştirilebilir $_.


Örnek Kullanım

$ 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
Bana\K öğrettiğin için teşekkürler !
Dom Hastings

@HomHastings, bu durumda, bayt sayısı için gerçekten gerekli değildi, s/.\B/$& /geşit derecede iyi çalışacaktı. Daha iyi bir örnek .
primo

6

GS2 , 38 37 bayt

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

Kaynak kod CP437 kodlamasını kullanır . Çevrimiçi deneyin!

Test sürüşü

$ 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

Nasıl çalışır

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

Sayı 5 bayt arttı, ama daha doğru! MartinBüttner @ teşekkürler!

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

Un-golfed

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 bayt

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

Diğer birçok cevapla aynı tekniği kullanır. Önerilerinizi bekliyoruz!


Neden "..." kullandığını açıklayabilir misin? JSFiddle olmadan çalışıyorum ve hala çalışıyor muyum?
Awashi

@Awashi Bir yayılma operatörüdür . Dizeyi bir karakter dizisine ayırır. O olmadan .join` `hiçbir şey yapmaz ve sonuçta hiç boşluk olmazdı.
user81655 26:15

@ user81655 Tank seni
Awashi

4

Ruby, 63 57 bayt

Karakteri komut satırı argümanı olarak alır: ruby keyboard.rb e

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

4

TeaScript , 50 45 44 bayt

TeaScript, golf oynamak için JavaScript'tir.

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

Ungolfed ve açıklama

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

Parametre olduğunda, bir gelen satır izin değilse pya da ldaha sonra, 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 kod + 1 karakter komut satırı seçeneği.)

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

Örnek çalışma:

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

Sonradan boşluk m, giriş 'm' ise programın çökmesini önlemektir.

@Manatwork'e ~ 16 bayt bahşiş için teşekkürler


Tahmin edeyim… Son seferde çok fazla Python kodlaması var mı?
Manatwork

1
Bazı küçük sözdizimi değişiklikleri: ARGV$*; each_charchars; do..end{.. }; printf$><<+ %Bu yol açacaktır: "qwertyuiop↵asdfghjkl↵zxcvbnm".split($*[0])[1].chars{|i|$><<"%s "%i}. Daha yılında İpuçları Ruby golf için .
Manatwork

@manatwork Ruby'de golf oynamaya ilk kez başladığınızda, ipuçları / bağlantı için teşekkür ederiz!
SnoringFrog 24:15

1
İlk yorumumda ipucunu alamadığını görüyorum. Ruby'de, çok satırlı dizgilerin etrafında üçlü tırnaklara gerek yoktur. (Aslında şu ana kadar Ruby tarafından kabul edildiği hakkında hiçbir fikrim yoktu.)
Manatwork

1
Çıktıdaki öncü alanlar oldukça çirkin. Gibi .normal ifadede uymuyor \n, varsayılan olarak daha iyi şekilde bu aralık için: puts"qwertyuiop↵asdfghjkl↵zxcvbnm ".split($*[0])[1].gsub(/./,'\& '). Kod uzunluğu aynı kalmasına rağmen.
Manatwork

2

PHP, 88 bayt

<?=$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 olarak sayılan komut satırı seçeneğini gerektirir . Varsayılan .ini ayarının varsayıldığı varsayılır (yerel .ini'nizi ile devre dışı bırakabilirsiniz -n).


Örnek Kullanım

$ 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 bayt

Düzenleme: @Fatalize gelen ipuçları ile 20 bayt kesin

kod

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

açıklama

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

Örnekler

>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_codeskullanarak, dize kodlarını sınırlayan ters tırnakları kullanarak parçayı kısaltabilirsiniz (dize çağrısı sırasında doğrudan L'yi değiştirebilirsiniz b).
13'te ölümle sonuçlandı

@ Serinleştirin! Yine de test etmek için SWI-Prolog kullandığım için, bu harika bir fikir gibi görünüyor.
Emigna

Ayrıca, b([A,_|T],[H]):-A=H,writef('%s',[T]);b(T,[H]).2 farklı kural yerine kullanmak b7 bayt daha kısadır. Genellikle, ;birden çok kural yazmak yerine, tüm kuralları tek bir kuralla birleştirmek için her zaman daha kısadır ; çünkü,
tahminin

Prolog'u öğrenmeye başladığımdan bu yana çok uzun zaman geçti ve böyle yapabileceğinizi tamamen unuttum. Harika ipucu! Thanks :)
Emigna

2

Befunge, 122 bayt

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

Burada test edilmiştir: Befunge-93 Tercüman .

Nasıl çalışır

  • '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' yığına itilir.
  • Atılacak değerlerin sayısı (kodlanmış @ZVD0FHJ:LNP^\<>,2B48X.T6R ) N basılır.
  • İlk N değerleri atılır ve kalan değerler yazdırılır.

Not

Kodlamayı seçtim, böylece dizginin @programla çakışması için başlaması gerekiyor. Bu dize aşağıdaki python kodu ile üretilir:

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
İyi ilk cevap! Code Golf SE'ye hoş geldiniz. (Ben de yeniyim.)
ghosts_in_the_code 25:15 te

1

Kabakulak - 102 Bayt

Golf betiği:

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 ve yorumladı:

 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.

Ekstra yeni satırlara izin veren kural beni neredeyse 10 bayt kurtardı ...


1

Java - 107 bayt

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

System.in gelen sarıcı sınıf okuma ile 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 "));
    }
}

Satır başlangıcındaki boşluklar kabul edilebilirse, 99 bayta kadar gidebiliriz:

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

1

Python 2, 58 67 63 bayt ##

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

Bir dize veya karakter olarak girişi alır. Dizeyi girişte böler ve bölmeden sonra her şeyi basar.

(İlk kez kod-golf, lütfen nazik olun: P)

EDIT: Karakterler arasında gerekli olan boşlukları görmedim, şimdi eklendi

2 EDIT: anonim bir lambda işlevi ve 4 bayt tasarrufu, ek argüman kaldırarak değiştirildi


PPCG'ye Hoşgeldiniz! Sonra boşluğa ihtiyacınız olduğunu sanmıyorum print, ancak bu her harf çifti arasındaki boşlukları yazdırmıyor gibi görünüyor.
Martin Ender

Şu anda bir referans sağlayamıyorum, ancak tercüman girişin ekstra biçimlendirilmesi gerektiğinde, bu sayıya da dahil edilir. (Hatalıysam beni düzelt, ancak sanırım bu girdi girdiler gibi "f"
etrafa alınmış

Güzel ilk golf. İşlevlere varsayılan olarak, hatta anonim olanlar bile izin verilir, bu nedenle bunu yapmak daha kısadır lambda s:.... Bence 1karakterin bir kere göründüğü için bölmenin bir argümana ihtiyacı yok . Bu, izin verilen olup olmadığından emin olmadan, başarılı satırların başlangıcında boşluklar oluşturur.
xnor

1

Yakut, 59 57 67 bayt

Harfler arasına boşluk eklendi

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

Bu, “m” girişinde başarısız olur. Bu, dizi indeksini -1'den 1'e değiştirerek kolayca düzeltilebilir, ancak daha sonra “m” girişi ile sonuçlanır nil. Bu bir problem değildir, ancak harfleri arasına boşluk eklemek için kodunuzu bitirirken sorunlara yol açacaktır.
Manatwork

1

JavaScript, 88 bayt

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

(ilk karakterden sonra boşluğa gerek yok, çünkü asla çıkışa ulaşmaz)

Aradığınızda klavyeyi uyarır s("some letter"). Ayrıca document.write()veya ile yapılabilir console.log(), ancak hey, daha uzun: 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
Muhtemelen sadece dizede kullanmak \nyerine birkaç bayt kurtarabilir ;ve değiştirmeden kurtulabilirsiniz.
ETHProductions,

@ Tabii, teşekkürler! Değişimi kullandım, çünkü ilk önce, satır sonlarını saymadan, değiştirme kısalıyordu. Sonra satır sonlarının orada olması gerektiğini fark ettim, bu yüzden tekrar yerine kullandım. Kodu daha uzun yapabileceğini bile düşünmedim: D
nicael 24:15

1

SQL (MS T-SQL), 172 bayt

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

Ungolfed:

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

Ben burada yeniyim, sadece bu siteyi keşfettim. Doğru bir şekilde yayınlanmış olsaydım ya da T-SQL'e izin verilirse hiçbir fikrim yok, ancak yukarıdaki prosedürün işe yaradığını biliyorum.


1

O 2.2, 48 46 karakter

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

Örnek çalışma:

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

Örnek çalışma:

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

Bu ... nedense IDE üzerinde çalışmak şimdi ona bakan yok
faz

"qwertyuiop\nasdfghjkl\nzxcvbnm\n"i/r;s{n.'\n=ST?}dyalnızca yeni tercüman üzerinde çalışır, ancak 51 bayttır.
faz

Permalinkler ... devam eden bir çalışma: P
faz

Yup, libregexp dizininde
faz

git repo klonu, o git submodule update --initzamanmake
faz

1

Japt , 49 42 41 40 38 bayt

Japt kısaltılmış versiyonudur Ja vaScri nk . yorumlayıcı

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

?Basılamaz Unicode karakter U +, 0086 olmalıdır.

Nasıl çalışır

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

Şimdi CJam'ı dövmek! :) Önerileriniz hoş geldiniz!

Rekabet etmeyen sürüm, 12 bayt

;Dv qU g1 ¬¸

Jan 11, ben ettik eklenen Japt için serin bir yeni özellik: Program lider virgül varsa, değişkenler ABCDEFGHIJLçeşitli değerlere yeniden tanımlanmıştır. Dolarak ayarlanır "QWERTYUIOP\nASDFGHJKL\nZXCVBNM", ;Dvburada dizgiyi değiştirmek yeterli olur.


0

Gema, 56 karakter

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

Örnek çalışma:

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 makine kodu + DOS, 61 bayt

Hexdump (sağda ASCII manzaralı):

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.

Montaj kaynak kodu (püs ile birleştirilebilir):

    .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

Burada iki eğlenceli şey:

  1. qwertyDize ofsetidir 0x011e. Üstteki bayt, karakter girişi için DOS fonksiyon numarası olan 1'dir. Bu kodda 1 bayt kaydeder.
  2. Tüm küçük harfler, 5 bit kümesine sahiptir. Bir yaparken ANDile 0x20, hepsi o zaman basılır bir boşluk, dönüştürülmektedir. Önceki karakter satır sonu baytıysa, 0 olur ve boşluk çıkarılmaz. Bu, 0d 20 0a 20çizginin sonundaki saçma dizilimden kaçınmak için kullanılır .

Neredeyse eğlenceli olan bir şey:

Adresin 0'dan başlayarak giriş karakterini aramaya çalıştım (program boyutunu 2 bayt azalttı), normal yer yerine (dizgenin başlangıcı). Bu neredeyse işe yaradı; ancak, giriş için başarısız oldu t, çünkü kodun kendisi bayt içeriyor t(koşullu bir atlamanın kodlamasının bir parçası olarak). Bu nedenle t, birkaç önemsiz bayt çıkarır:

çıktı


0

32, 32 karakter / 79 bayt

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

Try it here (Firefox only).

En azından char sayısında kazanıyorum ... (Byte sayısı farklı bir hikaye.)

Oh evet, kısa bir süre önce ( ⎖1yerine [1]) indeks kısayolları uyguladığımı fark ettim . Aptal ben!


Bu hangi dil? ya da kelimenin tam anlamıyla bu mu: i.imgur.com/WC7XvYs.png (ve orada belgeler var) bu garip, aha!
26:15

Bu ESMin. Mektuplar kuşku duymaz, bu yüzden onları görme konusunda sorun yaşayabilirsin. Bakınız github.com/molarmanful/ESMin (dokümanlar modası geçmiş olsa da).
Mama Fun Roll

0

C ++, 129, 112 97 bayt

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

Ungolfed:

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

Sen kullanarak 17 bayt tıraş olabilir putsyerinestd::cout<<
DJMcMayhem

@DJMcMayhem Teşekkürler! Mükemmel bir nokta: Ben hala bir ihtiyaç düşündüm nedense #includeiçin puts, ama besbelli bilmiyorum!
Tas

Ayrıca, bu 12 daha kısa.
DJMcMayhem

Teşekkürler! strstrBir şey olduğunu bilmiyordum bile .
Tas

Bence biraz fazla overgolfed. İhtiyacınız <stdio.h>için strstr.
DJMcMayhem

0

Toplu iş, 206 + 2 = 208 bayt

Bu gecikmeli genişleme kullandığından onu çağırmanız gerekir CMD /V /C keyboard.cmd <letter>, bu yüzden anahtar için 1 2 /Vekleyin.

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

Korkarım POSIX araçlarında cmdolduğu gibi komut satırı seçeneği de kabul ederse 1 sayılır /VC. Ama bildiğim gibi /V, kendi /sayımı gerekiyor ki bu da sayılıyor.
Manatwork

0

Python, 109 bayt

Biraz büyük olduğunu biliyorum ama şu anda nasıl yapılacağını biliyorum.

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()Sonunda aramaya ihtiyacın olduğunu sanmıyorum ; fonksiyonu tanımlamak yeterli. Ayrıca, 1 girinti yeterlidir. Bu değişiklikleri yaptıktan sonra bu siteyi kullanarak 108 bayt alıyorum .
ETHProductions, 27:15

@ETHovroductions vay ben bir zamanlar uzay şey olduğunu bilmiyordum. (Python'a yeni). Yardımın için tekrar teşekkürler!
Ashwin Gupta

0

Bash, 80 bayt

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

Kendiniz deneyin, $ 1 ile istediğiniz karakteri değiştirin veya #! / Bin / bash betiğini yapın.

İşte cygwin'den bazı örnekler:

$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

En kısa değil, ama yine de gurur duyuyorum!

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.