Вывести qwerty клавиатуру


37

Для данного персонажа выведите (на экран) всю раскладку клавиатуры qwerty (с пробелами и символами новой строки), которая следует за символом. Примеры проясняют

Вход 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

Самый короткий код выигрывает. (в байтах)

PS

Допускаются дополнительные новые строки или дополнительные пробелы в конце строки.


Достаточно ли функции или вам нужна полная программа, которая читает / записывает в 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
допускается ли пробел перед строкой?
Сахил Арора

1
@SahilArora Нет.
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

@ Да, это так.
Мартин Эндер

11

Pyth, 33 байта

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

Обратите внимание, что некоторые символы непечатаемы. Попробуйте онлайн в компиляторе Pyth .

Как это работает

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.

Оу, чувак, я только что создал свою первую программу Pyth (всего 38 байт!), Затем вы пришли ... +1 Кстати, я думаю, что \ это эквивалентно d.
ETHproductions

Ой, я думаю, что это не то же самое ... что отличается?
ETHproductions

1
@ETHproductions @Dennis По той же причине почему md5не получается 5 пробелов. dпеременная по умолчанию, которая перебирает итеративный аргумент оператора карты. И jL\ <list>это просто ярлык для оператора карты mj\ d<list>.
Якуб

1
@ Якуб О, это имеет смысл. Благодарность!
Деннис

10

Perl, 56 байт

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

Считая Шебанг как 3, ввод берется из стандартного ввода. Если ведущий символ новой строки не является проблемой для входов pи l, затем /$_\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 !
Дом Гастингс

@DomHastings в этом случае, это не было действительно необходимо для подсчета байтов, s/.\B/$& /gбудет работать одинаково хорошо. Лучший пример .
Примо

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

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 байт

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

Использует ту же технику, что и большинство других ответов. Предложения приветствуются!


Можете ли вы объяснить, почему вы используете "...". Я пытаюсь без JSFiddle и все еще работает?
Аваши

@Awashi Это оператор распространения . Он разделяет строку на массив символов. Без .join` `этого ничего бы не делалось и в результате не было бы пробелов.
user81655 26.11.15

@ user81655 Tank you
Awashi

4

Рубин, 63 57 байт

Принимает символ в качестве аргумента командной строки: ruby keyboard.rb e

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

4

TeaScript , 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

JavaScript 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».

Спасибо @manatwork за ~ 16 байтов советов


Дай угадаю ... Слишком много Python-кодирования в последнее время?
manatwork

1
Некоторые незначительные изменения синтаксиса: ARGV$*; each_charchars; do.. end{.. }; printf$><<+ %приведет к следующему: "qwertyuiop↵asdfghjkl↵zxcvbnm".split($*[0])[1].chars{|i|$><<"%s "%i}. Больше в Советы для игры в гольф в Руби .
manatwork

@manatwork Впервые пытаюсь сыграть в гольф в Ruby, спасибо за советы / ссылку!
SnoringFrog

1
Я вижу, вы не поняли подсказку в моем первом комментарии. В Ruby нет необходимости в тройных кавычках вокруг многострочных строк. (На самом деле я до сих пор понятия не имел, что Ruby его принял.)
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)];

Требуется параметр -Fкомандной строки, который считается равным 3. Предполагается настройка .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), 153 133 байта

Изменить: сократить 20 байтов с советами от @Fatalize

Код

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на строку).
Роковая

@ Фатализировать круто! Так как я использую SWI-Prolog для тестирования в любом случае, это звучит как отличная идея.
Эминья

Кроме того, b([A,_|T],[H]):-A=H,writef('%s',[T]);b(T,[H]).вместо 2 разных правил используется на b7 байт короче. Обычно всегда проще объединить все правила в единое с OR, ;вместо того, чтобы писать несколько правил, потому что вы избегаете повторения имени и параметров предиката и также избегаете перевода строки;)
Fatalize

Прошло так много времени с тех пор, как я выучил Пролог, что я совершенно забыл, что тебе это ИЛИ может нравиться. Отличный совет! Спасибо :)
Emigna

2

Befunge, 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 .

Как это работает

  • '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 значений отбрасываются, а остальные значения печатаются.

Заметка

Я выбрал кодировку, поэтому строка начинается с @того, чтобы перекрываться с программой. Эта строка генерируется с помощью следующего кода Python:

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. (Я также новичок.)
ghosts_in_the_code

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

Развернулся и прокомментировал:

 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

Java - 107 байт

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

Разгруженный с чтением класса оболочки из 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 "));
    }
}

Если бы пробелы в начале строки были приемлемы, мы могли бы уменьшить размер до 99 байт:

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

1

Python 2, 58 67 63 байта ##

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

Принимает ввод в виде строки или символа. Разбивает строку на входе и распечатывает все после разделения.

(Первый раз игра в гольф, пожалуйста, будьте осторожны: P)

РЕДАКТИРОВАТЬ: не видел дополнительные пробелы, необходимые между символами, добавлены сейчас

РЕДАКТИРОВАТЬ 2: Изменено, чтобы быть анонимной лямбда-функцией и удалить дополнительный разделенный аргумент, экономя 4 байта


Добро пожаловать в PPCG! Я не думаю, что вам нужно пробел после print, но кажется, что это не печатать пробелы между каждой парой букв.
Мартин Эндер,

Не могу предоставить ссылку прямо сейчас, но когда интерпретатор требует дополнительного форматирования ввода, это также включается в счетчик. (Поправьте меня, если я ошибаюсь, но я думаю, что это работает, только если входные данные передаются вместе с "f"
заключенными в

Хороший первый гольф. Функции разрешены по умолчанию, даже анонимные, поэтому короче сделать это как lambda s:.... Я думаю, что разделение не нуждается в аргументе 1, так как персонаж появляется только один раз. Это выводит пробелы в начале последующих строк, не уверенный, разрешено ли это.
xnor

1

Рубин, 59 57 67 байт

Добавлены пробелы между буквами

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

Это не сработало на входе «m». Это можно легко исправить, изменив индекс массива с -1 на 1, но тогда на входе появится «m» nil. Что само по себе не проблема, но при завершении кода у вас возникнут проблемы с добавлением пробелов между буквами.
Манатворк

1

JavaScript, 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

@ Конечно, спасибо! Я использовал замену, потому что сначала, без учета разрывов строк, замена будет сокращаться. Затем я заметил, что разрывы строк должны быть там, поэтому я использовал замену снова. Даже не думал, что это может сделать код длиннее: 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))

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

Я новичок здесь, только что обнаружил этот сайт. Не знаю, правильно ли я написал или 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, сейчас мы разбираемся с этим ...
этап

"qwertyuiop\nasdfghjkl\nzxcvbnm\n"i/r;s{n.'\n=ST?}dработает только на новом интерпретаторе, но составляет 51 байт.
этап

Постоянные ссылки ... работа в процессе: P
фаза

Да, в каталоге libregexp
фаза

мерзавец клонирует репо, затем git submodule update --init, затемmake
фаза

1

Japt , 49 42 41 40 38 байт

Japt - это сокращенная версия Ja vaScri pt . переводчик

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

?Должен быть нецензурным Unicode символ 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 ¬¸

По состоянию на 11 января я добавил новую замечательную функцию в Japt: если программа содержит начальную запятую, переменные ABCDEFGHIJLпереопределяются на различные значения. Dустановлен на "QWERTYUIOP\nASDFGHJKL\nZXCVBNM", поэтому ;Dvдостаточно заменить строку здесь.


0

Гема, 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 байт

Hexdump (с видом 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. При выполнении ANDс 0x20они все превращаются в пространство, которое затем печатается. Если предыдущий символ был байтом конца строки, он превращается в 0, и пробел не выводится. Это используется, чтобы избежать бессмысленной последовательности 0d 20 0a 20в конце строки.

Одна почти забавная вещь:

Я попытался найти входной символ, начинающийся с адреса 0 (который уменьшил размер программы на 2 байта), вместо обычного места (начало строки). Это почти сработало; однако, это не удалось для ввода t, потому что сам код содержит байт t(как часть кодирования условного перехода). Так что t, это вывело бы несколько ненужных байтов:

выход


0

𝔼𝕊𝕄𝕚𝕟, 32 символа / 79 байтов

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

Try it here (Firefox only).

По крайней мере, я выигрываю в счетчике символов ... (Счетчик байтов - это другая история.)

Ах да, только что понял, что я внедрил ярлыки индекса ( ⎖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));}

Ungolfed:

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

Вы можете сбрить 17 байтов, используя putsвместоstd::cout<<
DJMcMayhem

@DJMcMayhem Спасибо! Отличный момент: по какой-то причине я думал, что мне все еще нужно #includeдля puts, но, очевидно, я этого не делаю!
Тас

Кроме того, это еще 12 короче.
DJMcMayhem

Благодарность! Я даже не знал, что это strstrбыла вещь.
Тас

Я думаю, что это немного перегружено. Вам нужно <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 =!

Я боюсь, что параметр командной строки будет считать 1, если cmdпримет его так /VC, как это делают инструменты POSIX. Но, как я знаю, /Vтребует своего /, который также учитывается.
manatwork

0

Python, 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 Вау, я не знал, что когда-то космическая вещь. (Плохо знаком с Python). Еще раз спасибо за помощь!
Эшвин Гупта

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

Это не самое короткое, но я все еще горжусь этим!

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.