เขียนล่าม“ สวัสดี”

Sep 03 2020

พื้นหลัง

สวัสดีเป็นภาษา "เขียน" โดยAnne Velingซึ่งเกิดข้อผิดพลาดหากโปรแกรมไม่ได้มีเพียงอย่างเดียวhและจะพิมพ์Hello Worldสำหรับทุกๆh

งาน

คุณต้องเขียนล่าม / คอมไพเลอร์สวัสดี

ตัวอย่างใน Python

import os
i = input("Program: ")
for a in i:
    if a != 'h':
        print("err")
        quit()
    else:
        print("Hello World")

รายละเอียด

  • หากโปรแกรมไม่เพียง แต่hต้องพิมพ์errหรือerror(ไม่คำนึงถึงขนาดตัวพิมพ์)
  • เป็นเรื่องปกติถ้าคุณพิมพ์ "Hello World" ก่อนที่โปรแกรมของคุณจะพบว่าไม่มีhอักขระและข้อผิดพลาดอย่างไรก็ตามโปรแกรมจะต้องหยุดหากไม่มีh
  • คุณอาจเกิดข้อผิดพลาดได้ตราบเท่าที่คุณพิมพ์err/ errorก่อนโยนหรือโดยใช้ข้อผิดพลาดที่สร้างขึ้นเองเช่นraise SyntaxError('err')ใน python (โดยพื้นฐานแล้วคุณต้องมีข้อผิดพลาดโดยเจตนากับerr/error
  • สมมติโปรแกรมจะไม่ว่างเปล่า
  • เอาต์พุตสามารถมีการขึ้นบรรทัดใหม่ช่องว่างหรือไม่มีอะไรเพื่อแยกHello Worlds
  • หากโปรแกรมมีหลายบรรทัดควรมีข้อผิดพลาด (เนื่องจาก\nไม่ใช่h)
  • คุณสามารถสมมติว่าอินพุตจะเป็น ASCII 33-126 และ 10 (ทศนิยม) เสมอ
  • พบคำสั่งhs เป็นตัวพิมพ์เล็ก (ดังนั้นHไม่ใช่โปรแกรมที่ถูกต้อง)
  • นี่คือรหัสกอล์ฟคำตอบที่สั้นที่สุดชนะ

กรณีทดสอบ

Input:

h

Output:

Hello World

Input:

hhhhhh

Output:

Hello WorldHello WorldHello WorldHello WorldHello WorldHello World

(again, it doesn't matter whether it's spaces, newlines, or nothing to separate `Hello World`s

Input:

rubbish

Output:

err

Input:

huh

Output:

Hello Worlderr

Or

err

ความท้าทายแรกดังนั้นโปรดเมตตา

คำตอบ

26 JoKing Sep 03 2020 at 11:48

ความยาว , \$1.42 \times 10^{122}\$ ไบต์

ลบไบต์จำนวนมากขอบคุณ Kevin Cruijssen และ Bubbler

hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh...

นี่คือ 142099843608359281286315447494338058415442968773543757980908246691462388164856076679905341690709953072132211450166077106439 hs ซึ่งทำให้เป็นโปรแกรม Hello ที่ถูกต้องแม้ว่าจะไม่ใช่โปรแกรมที่คุณต้องการเรียกใช้ก็ตาม รหัส brainfuck เดิมคือ140 135 ไบต์:

,[>-[<-->-----]+<--[>]>[[-->-[>>+>-----<<]<--<---]>-.>>>+.>>..+++.>>.>.<<<.+++.------.<<-.[>]>>>>,>]<]<[[>++<+++++]>-.+++++++++++++..>]

ลองออนไลน์!

สิ่งนี้จะพิมพ์ Hello World ทุกครั้งที่เห็นhผ่านการปรับเปลี่ยนHello, World ที่สั้นที่สุดที่รู้จักกันดี โปรแกรมหยุดห่วงและการพิมพ์ถ้าเห็นอะไรอื่นนอกจากerrh

13 xnor Sep 03 2020 at 12:19

Python 3 , 49 ไบต์

lambda s:{*s}-{'h'}and'err'or'Hello World'*len(s)

ลองออนไลน์!

Python 2, 51 ไบต์

lambda s:s.strip('h')and'err'or'Hello World'*len(s)

ลองออนไลน์!

Python 2, 51 ไบต์

lambda s:['err','Hello World'*len(s)]['h'+s==s+'h']

ลองออนไลน์!

11 Adám Sep 03 2020 at 12:41

APL (Dyalog Unicode) , 32 ไบต์ ( SBCS )

ฟังก์ชันคำนำหน้าโดยปริยายแบบไม่ระบุชื่อ

{'h'=⍵:'Hello World'⋄-⎕←'err'}⍤0

ลองออนไลน์!

{... }⍤0 แทนที่อักขระแต่ละตัว ( ⍵) ด้วยผลลัพธ์ของการใช้แลมด้าต่อไปนี้กับมัน:

 'h'=⍵: ถ้าตัวละครคือh:

  'Hello World' ส่งคืนวลีที่ต้องการ

 ⋄ อื่น:

  ⎕←'err' พิมพ์err
  - ลบ (ทำให้เกิดข้อผิดพลาดและยุติ)

11 CongChen Sep 03 2020 at 19:17

R , 76 ไบต์

function(p,n=nchar(p))ifelse(p==strrep('h',n),strrep("Hello World",n),'err')

ลองออนไลน์!

ควรเป็นความคิดเห็นเกี่ยวกับ https://codegolf.stackexchange.com/a/210520/98085- ฉันไม่รู้เลยว่าคุณจะทำหน้าที่แบบนั้นได้! การเปลี่ยนแปลงเล็กน้อยเพื่อให้มีประสิทธิภาพมากขึ้นเมื่อ n = 0 และใช้การเปรียบเทียบโดยตรงแทน regex -1 ไบต์ขอบคุณhttps://codegolf.stackexchange.com/users/90265/zippymagician.

รุ่นโบนัสพร้อมเอฟเฟกต์ข้างเคียง (เช่นการกำหนดค่าการลบใหม่) ต้องขอบคุณ https://codegolf.stackexchange.com/users/92901/dingus.

R , 71 ไบต์

{`-`=strrep;function(p,n=nchar(p))`if`(p=='h'-n,'Hello world'-n,'err')}

ลองออนไลน์!

7 manatwork Sep 03 2020 at 11:32

Gema 23 ตัวอักษร

h=Hello World
?=err@end

ตัวอย่างการรัน:

bash-5.0$ echo -n 'hohoho' | gema 'h=Hello World;?=err@end'
Hello Worlderr

Gema (เวอร์ชันเก่าที่มีข้อผิดพลาดในรหัสว่างเปล่า), 32 อักขระ

\A\Z=err
h=Hello World
?=err@end

ลองออนไลน์! / ลองทดสอบทุกกรณีทางออนไลน์!

7 640KB Sep 03 2020 at 21:02

รหัสเครื่อง x86-16, IBM PC DOS, 41 40 ไบต์

ไบนารี่:

00000000: be82 00ba 1801 b409 ac3c 0d74 0a3c 6874  .........<.t.<ht
00000010: 02b2 24cd 2174 f1c3 4865 6c6c 6f20 576f  ..$.!t..Hello Wo 00000020: 726c 6424 6572 7224 rld$err$

รายชื่อ:

BE 0082         MOV  SI, 82H            ; SI to DOS PSP 
BA 0118         MOV  DX, OFFSET HW      ; point to 'Hello World' string 
B4 09           MOV  AH, 9              ; DOS write string function 
            CHAR_LOOP: 
AC              LODSB                   ; AL = next input byte 
3C 0D           CMP  AL, 0DH            ; is a CR (end of input string)? 
74 0A           JZ   DONE               ; if so, end 
3C 68           CMP  AL, 'h'            ; is an 'h'? 
74 02           JZ   WRITE_STR          ; if so, write Hello(s)
B2 24           MOV  DL, LOW OFFSET ER  ; otherwise, point to 'err' string 
            WRITE_STR: 
CD 21           INT  21H                ; write string to stdout 
74 F1           JZ   CHAR_LOOP          ; if 'h', keep looping 
            DONE:
C3              RET                     ; return to DOS 
            HW  DB  'Hello World$'
            ER  DB  'err$'

โปรแกรม COM ที่ทำงานได้บน PC DOS แบบสแตนด์อโลน ป้อนข้อมูลผ่านบรรทัดคำสั่ง เวอร์ชันนี้จะพิมพ์ออกมาHello Worlderrหากมีข้อผิดพลาดในรหัสอินพุต

และเพื่อความสนุกสนาน (และเนื่องจากฉันทำครั้งแรก) เวอร์ชันนี้จะพิมพ์เฉพาะerrเมื่อมีข้อผิดพลาดในโค้ดเท่านั้น

รหัสเครื่อง x86-16, IBM PC DOS, 47 45 44 ไบต์

ไบนารี่:

00000000: bf80 00ba 1c01 8a0d 4951 abb8 6809 f3ae  ........IQ..h...
00000010: 5974 04b2 28b1 01cd 21e2 fcc3 4865 6c6c  Yt..(...!...Hell
00000020: 6f20 576f 726c 6424 6572 7224            o World$err$

รายชื่อ:

BF 0080         MOV  DI, 80H            ; DI to DOS PSP 
BA 011C         MOV  DX, OFFSET HW      ; point to 'Hello World' string 
8A 0D           MOV  CL, BYTE PTR[DI]   ; CL = input length 
49              DEC  CX                 ; remove leading space from length 
51              PUSH CX                 ; save length for later 
AB              STOSW                   ; DI to start of command line input
B8 0968         MOV  AX, 0968H          ; AL = 'h', AH = 9 
F3/ AE          REPZ SCASB              ; search input for 'h': ZF if Hello, NZ if error
59              POP  CX                 ; restore input length 
74 04           JZ   HELLO_LOOP         ; if no error, write Hello(s) 
B2 28           MOV  DL, LOW OFFSET ER  ; otherwise, point to 'err' string 
B1 01           MOV  CL, 1              ; only show 'err' once 
            WRITE_LOOP: 
CD 21           INT  21H                ; write string to stdout 
E2 FC           LOOP WRITE_LOOP         ; loop until done 
C3              RET                     ; return to DOS 
            HW  DB  'Hello World$'
            ER  DB  'err$'

อุปกรณ์ประกอบฉาก:

  • -1 ไบต์สำหรับทั้งสองขอบคุณ @MatteoItalia สำหรับคำแนะนำในการเปลี่ยนเฉพาะไบต์ต่ำบนตัวชี้สตริงข้อผิดพลาด
6 Dingus Sep 03 2020 at 10:45

Ruby -0p , 42 ... 35 33 ไบต์

แนวคิดในการใช้-0pแฟล็ก (แทนที่จะเป็น-nแบบที่ฉันมี) มาจากคำตอบ Perl ของ @ DomHastingsซึ่งประหยัดได้ 4 ไบต์

$_=/[^h]/?:err:'Hello World'*~/$/

ลองออนไลน์!

อ่านโปรแกรมจาก STDIN regex ใช้เพื่อตรวจสอบว่าโปรแกรมมีอักขระอื่นนอกเหนือhจาก ถ้าเป็นเช่นนั้นพิมพ์err; มิฉะนั้นให้พิมพ์Hello Worldหลาย ๆ ครั้งตามจำนวนอักขระในโปรแกรม (กำหนดโดย~/$/)

การใช้ลิเทอรัล regex แบบเปลือยเป็นบูลีนคือ Perlism ที่เลิกใช้แล้วซึ่ง (ตั้งแต่ Ruby 1.9) ใช้งานได้กับแฟล็ก-nหรือ-pเท่านั้น

5 Lyxal Sep 03 2020 at 12:29

05AB1E , 17 ไบต์

'hÃQig”Ÿ™‚ï”×ë'‰ë

ลองออนไลน์!

ขอบคุณมากที่ @Kevin สำหรับเครื่องมือบีบอัดพจนานุกรมของคุณ!

และเป็นอีกครั้งที่เควินได้โจมตีและจัดการเพื่อโกน 3 ไบต์จากคำตอบของฉัน! ดังนั้นคำขอบคุณดังกล่าวจะต้องคูณด้วยขนาดใหญ่

อธิบาย (เก่า)

Ð'hÃQig”Ÿ™‚ï”и»ë"err
Ð                       # Triplicate the input. STACK = [input, input, input]
 'h                     # Push the letter 'h'. STACK = [input, input, input, 'h']
   Ã                    # Keep _only_ the letter h in the input. STACK = [input, input, input.keep('h')]
    Q                   # Compare this with the original input. STACK = [input, 1 OR 0]
     i                  # If the comparison is truthy (i.e. it's only h's):
      g                 #   Push the length of the input. STACK = [len(input)]
       ”Ÿ™‚ï”           #   Push the compressed string "Hello World". STACK = [len(input), "Hello World"]
             и»         #   Repeat that string length of input times and join upon newlines. STACK = ["\n".join("Hello World" * len(input))]
               ë        # Else:
                "err    #   Push the string "err" to the stack. STACK = [input, "err"]
                        # Implicitly output the top of the stack
   
         
5 MichaelKlein Sep 03 2020 at 22:56

Haskell (Hugs 2006), 31 ไบต์

mapM(\'h'->putStr"Hello World")

รอคำถามเกี่ยวกับ OP re "error" ในข้อความแสดงข้อผิดพลาดที่ใหญ่กว่า ข้อมูลจำเพาะระบุว่า "ต้องพิมพ์ผิดพลาดหรือผิดพลาด" ซึ่งทำใน Hugs 2006 โดยเฉพาะRaskell 1.0.13 interpreter based on Hugs 2006:

> mapM(\'h'->putStr"Hello World") "huh"
Hello World
Program error: pattern match
failure: ww_v4136 'u'
4 ZippyMagician Sep 03 2020 at 19:16

Arn , 24 ไบต์

ùÝ└ån<⁼aLw$■v&Z(#▄╗└·I╔║

ลองมัน!

อธิบาย

ไม่ได้บรรจุ: (${="h"})#=#&&'yt bs'^#||"err

และนี่คือสาเหตุที่ฉันต้องเพิ่ม if else ...

      (              Begin expression
        $            Filter
          {          Block with index of _
              _      Implicit
            =        Equals
              "h"    String
          }          End block
          _          Variable initialized to STDIN; implied
      )              End expression
    #                Length
  =                  Equals
      _              Implied
    #
&&                   Boolean AND
    'yt bs'        Compressed string equal to "Hello World"
  ^                  Repeated
      _              Implied
    #
||                   Boolean OR
  "err
4 EngineerToast Sep 03 2020 at 19:35

Excel, 63 ไบต์

=IF(SUBSTITUTE(A1,"h","")="",REPT("Hello World",LEN(A1)),"err")

SUBSTITUTE(A1,"h","")=""ส่งคืนTRUEiff A1ไม่มีอะไรเลยนอกจากh.

REPT("Hello World",LEN(A1))A1ซ้ำสตริงสำหรับตัวอักษรอย่างไรก็ดีหลายคนที่อยู่ใน

=If(Substitute(~)="",REPT(~),"err")ส่งคืนสตริงที่ซ้ำถ้าA1มีเท่านั้นhและerrหากมีสิ่งอื่น

4 Giuseppe Sep 03 2020 at 21:14

SNOBOL4 (CSNOBOL4) , 94 ไบต์

	I =INPUT
	I NOTANY('h')	:S(E)
	OUTPUT =DUPL('Hello World',SIZE(I))	:(END)
E	OUTPUT ='err'
END

ลองออนไลน์!

	I =INPUT					;* Read input
	I NOTANY('h')	:S(E)				;* If there is a character that's not 'h' in the input, goto E
	OUTPUT =DUPL('Hello World',SIZE(I))	:(END)	;* else print "Hello World" repeatedly and goto END
E	OUTPUT ='err'					;* print 'err'
END
4 JonathanAllan Sep 03 2020 at 23:10

เยลลี่ 17 ไบต์

14 ถ้าเราสามารถพิมพ์Errเป็นสตริงย่อยของเอาต์พุต (เช่น“½,⁾ẇṭ»€!fƑ?”h TIO )

“½,⁾ẇṭ»€“¹ṫ»fƑ?”h

ลองออนไลน์!

อย่างไร?

“½,⁾ẇṭ»€“¹ṫ»fƑ?”h - Main Link: program
               ”h - set right argument to 'h'
              ?   - if...
             Ƒ    - ...condition: is (program) invariant under?:
            f     -     keep only ('h's)
       €          - ...then: for each (c in program):
“½,⁾ẇṭ»           -     "Hello World"
        “¹ṫ»      - ...else: "error"
                  - implicit, smashing print
4 Noodle9 Sep 04 2020 at 02:38

เฟล็กซ์ , 76 \$\cdots\$ 55 52 ไบต์

%%
h puts("Hello World");
[^h] puts("err");exit(1);

ใส่รหัสด้านบนในไฟล์ที่เรียกhello.lและสร้างล่ามด้วย:

flex hello.l && gcc lex.yy.c -o hello -lfl

ลองใช้เครื่องปลายทางของฉัน:

> echo -n hhh|./hello.exe
Hello World
Hello World
Hello World

ด้วยการขึ้นบรรทัดใหม่:

> echo hhh|./hello.exe
Hello World
Hello World
Hello World
err

สังเกตว่าerrเนื่องจากการขึ้นบรรทัดใหม่echoตามปกติจะส่ง

ด้วยhอักขระที่ไม่ใช่:

> echo -n hhhehhh|./hello.exe
Hello World
Hello World
Hello World
err
4 AZTECCO Sep 03 2020 at 17:46

C (gcc) , 71 65 ไบต์

f(char*p){p=*p-'h'?*p&&puts("err"):f(p+1)||!puts("Hello World");}

ลองออนไลน์!

  • ขอบคุณ @rtpax สำหรับการประหยัด 6!

f(char*p){p=- ฟังก์ชั่นการตรึงprogramและกลับมาพร้อมกับเคล็ดลับ EAX pที่นำ
เรียกตัวเองซ้ำ
การเรียกซ้ำเกิดขึ้นก่อนprogramการดำเนินการดังนั้นหากขั้นตอนทั้งหมดถูกต้องfalseจะส่งคืนค่าและprogramดำเนินการ
หากมีข้อผิดพลาดtruthyค่าจะถูกส่งกลับและprogramไม่ได้ดำเนินการเลยข้อความแสดงข้อผิดพลาดจะปรากฏขึ้น

* p-'h '? `... `: f (p + 1) ||! puts ("สวัสดีชาวโลก");
 - ตรวจสอบอักขระแต่ละตัวในโปรแกรม : ถ้าh   ยังคงเรียกซ้ำและ
   หากผลลัพธ์เป็นโปรแกรมเท็จก็ทำงานได้
pเป็นจริง   หากมีข้อผิดพลาดเป็นเท็จแทน

 - ถ้าไม่hหยุดการเรียกซ้ำและ:
p * - ถ้าในตอนท้ายของโปรแกรม 
P   เป็นเท็จ 
&& ทำให้ ( "ผิดพลาด") - ถ้าไม่สิ้นสุดของโปรแกรมข้อผิดพลาดการแสดงผล
 หน้า   เป็นจริง



61 58 bytesทางเลือกอื่นที่น่าสนใจน้อยกว่าซึ่งรันโปรแกรมและหยุดเมื่อเกิดข้อผิดพลาด

f(char*p){*p&&puts(*p-'h'?"err":"Hello World")>4&&f(p+1);}
  • บันทึก 3 ขอบคุณ @rtpax!
3 Mukundan314 Sep 03 2020 at 11:17

Python 3 , 52 ไบต์

lambda x:(x=='h'*len(x))*len(x)*'Hello World'or'err'

ลองออนไลน์!

3 ManishKundu Sep 03 2020 at 11:15

Python 3 , 58 ไบต์

lambda s:s and s=="h"*len(s)and"Hello World"*len(s)or"err"

ลองออนไลน์!

3 Shaggy Sep 03 2020 at 21:59

JavaScript, 49 ไบต์

-4 ไบต์ถ้าเราสามารถโยนข้อผิดพลาดแทนที่จะส่งออกสตริง

f=([c,...a])=>c?c==`h`?`Hello World`+f(a):`err`:a

ลองออนไลน์!

3 NoOorZ24 Sep 03 2020 at 15:07

JavaScript 72 66 ไบต์

-6 ไบต์ขอบคุณ @Ismael Miguel

alert(/^h*$/.test(a=prompt())?a.replace(/h/g,'Hello World'):'err')
3 Razetime Sep 03 2020 at 13:03

Pip , 28 27 ไบต์

aRM'h?"err""Hello World"X#a

-1 ไบต์จาก DLosc

หากสตริงที่ไม่มี h ว่างเปล่าให้พิมพ์ "Hello World" ตามจำนวนครั้งที่ต้องการ

มิฉะนั้นข้อผิดพลาด

โปรแกรมนี้มีข้อผิดพลาดเกี่ยวกับอินพุตว่างเช่นกัน

ลองออนไลน์!

3 aidan0626 Sep 03 2020 at 12:00

Python 3 , 57 52 ไบต์

lambda a:a=='h'*len(a)and'Hello World'*len(a)or'err'

ลองออนไลน์!

2 Mukundan314 Sep 03 2020 at 13:20

Japt , 23 19 ไบต์

-4 ไบต์ขอบคุณ @Shaggy

rh ?`r`:¡`HÁM Wld

ลองมัน

คำอธิบาย

rh ?`...`:¡`...
   ?              // if
rh                //   input with 'h' removed
    `...`         // then "err"
         :        // else
          ¡       //   each char in input
           `...   //   replaced with "Hello World"
2 KevinCruijssen Sep 03 2020 at 15:47

MathGolf , 23 20 ไบต์

'h-╛æ╖•p0{δ╕○ô 'W╕7ÿ

ลองออนไลน์

คำอธิบาย:

'h-                  '# Remove all "h" from the (implicit) input-string
   ╛                  # Pop, and if it's now truthy (thus non-empty):
    æ                 #  Use the following four characters as single code-block:
     ╖•p              #   Push compressed string "err"
        0             #   And push a 0
         {            # Either loop 0 times,
                      # or loop over each character of the (implicit) input-string:
          δ           #  Titlecase the implicitly pushed current character ("h"→"H")
           ╕○ô        #  Push compressed string "ello"
                      #  Push " "
               'W    '#  Push "W"
                 ╕7ÿ  #  Push compressed string "orld"
                      # (implicitly output the entire stack joined together as result)
2 IsmaelMiguel Sep 03 2020 at 19:04

SimpleTemplate 0.84, 92 63 ไบต์

ความท้าทายนี้เรียบง่าย แต่สนุก!

เพียงตรวจสอบว่าอินพุตเป็นเพียง "hhh .... " และส่งออกข้อความหรือส่งออก "err" เป็น STDOUT:

{@ifargv.0 matches"@^h+$@"M}{@eachM.0}Hello World{@/}{@else}err

การประหยัดไบต์ขนาดใหญ่เกิดจากความคิดเห็นของโคบอลต์ :

การส่งออกไปยัง STDOUT นั้นใช้ได้ดังนั้นคุณสามารถใช้เวอร์ชัน 63 ไบต์ของคุณได้


ไม่พอใจ:

ด้านล่างนี้เป็นโค้ดเวอร์ชันที่อ่านได้ง่ายขึ้น:

{@if argv.0 matches "@^h+$@"}
    {@each argv.0 as h}
        {@echo "Hello World"}
    {@/}
{@else}
    {@echo "err"}
{@/}

คุณสามารถลองสิ่งนี้ได้ที่: http://sandbox.onlinephpfunctions.com/code/e35a07dfbf6b3b56c2608aa86028b395ef457129

2 Veskah Sep 04 2020 at 03:03

PowerShell , 44 ไบต์

$args|%{if($_-104){'err';exit}"Hello World"}

ลองออนไลน์!

รับข้อมูลโดยการแยก

2 Xvolks Sep 05 2020 at 22:34

GFA Basic (Atari ST), 125 ไบต์

INPUT a$ FOR i=1 TO LEN(a$)
b$=MID$(a$,i,1) IF b$="h"
PRINT "Hello World"
ELSE
PRINT "err"
EXIT IF 1
ENDIF
NEXT I
2 KevinCruijssen Sep 03 2020 at 14:45

Java 8, 65 53 ไบต์

s->s.matches("h+")?s.replace("h","Hello World"):"err"

-12 ไบต์ขอบคุณที่@ corvus_192

ลองออนไลน์

คำอธิบาย:

s->                           // Method with String as both parameter and return-type
  s.matches("h+")?            //  If the input consists solely of 1 or more "h":
    s.replace("h",            //   Replace all "h" in the input
              "Hello World")  //   with "Hello World"
             :                //  Else:
              "err"           //   Return "err" instead
1 Mukundan314 Sep 03 2020 at 13:05

Pyth 25 ไบต์

?-Q\h"err"*"Hello World"l

ลองออนไลน์!

คำอธิบาย

?-Q\h"err"*"Hello World"l
?                           // if
 -Q\h                       //    input with 'h' removed
     "err"                  // then "err"
          *"Hello World"l   // else "Hello World" repeated len(input) times
1 DominicvanEssen Sep 03 2020 at 15:59

R , 84 ไบต์

function(p,n=nchar(p))`if`(n-lengths(gregexpr("h",p)),"err",strrep("Hello World",n))

ลองออนไลน์!

เนื่องจากRเป็นภาษาของเดือนกันยายน 2020 เรามาหาคำตอบ R สำหรับความท้าทายนี้กัน
อย่างไรก็ตามนี่ยังไม่ใช่คำตอบที่สั้นที่สุดในRดังนั้นฉันจึงอยากสนับสนุนให้นักกอล์ฟคนอื่น ๆ ที่ไม่ใช่ R-ปกติได้ไปด้วยเช่นกัน ...

1 Neil Sep 03 2020 at 16:20

แบทช์ 64 ไบต์

@set/ps=
@if "%s:h=%"=="" (echo %s:h=Hello World%)else echo err

รับข้อมูลบน STDIN ถ้าเปลี่ยนhในผลการป้อนข้อมูลในสตริงว่างการส่งออกผลของการแทนที่ที่hมีต่อการส่งออกเป็นอย่างอื่นHello Worlderr