พิมพ์“ สวัสดีโลก!”


11

Hello, World!เขียนโปรแกรมซึ่งจะสร้างเหตุการณ์แป้นพิมพ์ที่พิมพ์

ไม่จำเป็นต้องขึ้นกับแพลตฟอร์ม

มันไม่สามารถกดปุ่มใด ๆ ได้เลย ตัวอย่างเช่นใน Java Robot.KeyPress('H');จะปล่อยHกดดังนั้นคุณต้องปล่อยด้วยRobot.KeyRelease('H');

คุณอาจสันนิษฐานว่าแคปล็อคถูกปิดใช้งานเมื่อโปรแกรมของคุณทำงาน ตัวพิมพ์ใหญ่สามารถพิมพ์ได้ทั้งโดยกดปุ่ม Shift ค้างไว้หรือกดตัวอักษรหรือโดยการสลับการแคปล็อค สำหรับ!คุณอาจต้องใช้วิธีเปลี่ยน

รหัสที่สั้นที่สุดชนะ

คำตอบ:


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

หลังจากใช้คำแนะนำของ ugoren:

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

@ugoren ขอบคุณฉันจะลองดู :)
saeedn

อันนี้ไม่สั้น ทำไมนี่คือคำตอบที่ยอมรับได้? (ฉันคิดว่ามันเป็นคำตอบที่ดี แต่ฉันต้องการที่จะเรียนรู้วิธีการทำงานของเว็บไซต์)
11684

@ 11684 ผู้เขียนคำตอบที่สั้นที่สุดขอให้ฉันไม่นับมันดังนั้นฉันจึงยอมรับคำตอบที่ไม่ใช่คำย่อที่สั้นที่สุดแทน
cardboard_box

ไม่จำเป็นต้องเรียกใช้งานttyได้ก็ต่อเมื่อ stdin เป็น tty ซึ่งในกรณี0นี้เป็นเทอร์มินัลแบบเปิดอยู่แล้ว
เดฟ

18

AppleScript 50 ไบต์

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

ขอบคุณ marinus สำหรับคำแนะนำ


3
ฮะ. ดูเหมือนว่าคุณจะเลือกภาษาที่เหมาะสมกับงานที่ต้องการ
cardboard_box

tell app"System Events"to keystroke"Hello, World!"คุณสามารถย่อให้
marinus

Damnit ฉันคิดเรื่องนี้อย่างอิสระ ... +1!
11684

13

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

เครื่องหมายจุลภาคอยู่ที่ไหนควรจะอยู่ที่ไหน แก้ไขไม่เป็นไรฮ่า ๆ
jdstankosky






โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.