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_char→ chars; 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.