Наберіть "Привіт, світ!"


11

Напишіть програму, яка генерує події клавіатури типу Hello, World!.

Він не повинен бути незалежним від платформи.

Він не може залишати жодну клавішу натиснутою. Наприклад, у Java Robot.KeyPress('H');залишиться Hнатиснутим, тому його потрібно відпуститиRobot.KeyRelease('H');

Ви можете припустити, що блокування заглушок вимкнено під час запуску програми. Великі літери можна вводити, утримуючи зсув і натискаючи букву, або перемикаючи великі літери. Для цього !, ймовірно, доведеться використовувати метод зсуву.

Найкоротший код виграє.

Відповіді:


9

C (Linux), 186 байт

#include<sys/ioctl.h>
#include<fcntl.h>
#include<stdio.h>
main(){char*s="Hello, World!",d[99],*c;fscanf(popen("tty","r"),"%s",d);int D=open(d,O_RDWR);for(c=s;*c;c++)ioctl(D,TIOCSTI,c);}

Після застосування пропозицій угорену:

111 байт

main(D){char*c,d[99];fscanf(popen("tty","r"),"%s",d);D=open(d,2);for(c="Hello, World!";*c;)ioctl(D,21522,c++);}

Можна трохи скоротити. Видаліть s(просто ініціалізуйте for(c="H..), збільшуючи cв ioctl, main(D)для збереження int. Можливо також видалити деякі включення (навіть жорсткий код O_RDWRі TIOCSTI).
угорен

@ugoren Спасибі, я спробую їх :)
saeedn

Цей не найкоротший. Чому це прийнята відповідь? (Я думаю, що це приємна відповідь, але я просто хочу дізнатися, як працює сайт.)
11684,

@ 11684 Автор найкоротшої відповіді попросив мене не рахувати її, тому я прийняв натомість найкоротшу нетривіальну відповідь.
cardboard_box

Не потрібно називати ttyце лише тоді, коли stdin - це tty, у такому випадку 0це вже відкритий термінал fd.
Дейв

18

AppleScript, 50 байт

tell app"System Events"to keystroke"Hello, World!"

Дякуємо Марині за пропозицію.


3
Ага. Схоже, ви вибрали потрібну мову для правильної роботи.
cardboard_box

Ви можете скоротити його до tell app"System Events"to keystroke"Hello, World!".
Марін

Чорт, я думав про це самостійно ... +1!
11684

13

Автоматична клавіша, 20 байт

send Hello, World{!}

Будь ласка, не рахуйте цього. Я не хочу обманювати людей, які насправді робили це мовою, не призначеною для надсилання натискань клавіш. Ця відповідь лише для завершення: P



3

C у Windows 7, 201 байт

#include<windows.h>
#include<winable.h>
#define S SendInput(1,&k,28);
int k[7]={1};main(i){char*s="^HELLO, ^WORLD^1";for(i=0;i<16;i++){k[2]=0;if(s[i]>90){k[1]=16;S i++;}k[1]=s[i];S k[2]=2;S k[1]=16;S}}

Результат програми:

C:\My\Directory>type.exe

C:\My\Directory>Hello, World!

1

AutoIt3, 21 байт

Send("Hello, World!")

пропущена кома! Це насправді 21 годин
Doorknob

Де повинна бути кома? Редагувати, неважливо, lol.
jdstankosky






Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.