รหัสกอล์ฟสำหรับเพื่อนแท้ของฉัน


35

... และกอล์ฟจริงสำหรับเพื่อนรหัสของฉัน

นี่เป็นความท้าทายบนพื้นฐานของการ์ตูน XKCD อายุหนึ่งปีซึ่งส่วนใหญ่ประกอบด้วยขนมปังปิ้ง (ล้อเลียนของการ์ตูนเรื่องแรก) ตามรูปแบบที่แตกต่างกัน แต่มีการเปลี่ยนแปลงเล็กน้อย

งานของคุณคือการเขียนโปรแกรม (หรือฟังก์ชั่น) ที่ใช้ครึ่งแรกของขนมปังจากการ์ตูน (ทุกอย่างจนถึงและรวมถึงfriends) เป็นอินพุต (ผ่าน stdin หรืออาร์กิวเมนต์ของฟังก์ชัน) และผลลัพธ์ (หรือส่งคืน) ข้อความที่แม่นยำของ ครึ่งหลัง คุณไม่ต้องจัดการกับอินพุตที่ไม่ถูกต้องใช้ช่องโหว่มาตรฐานรหัสที่สั้นที่สุดเป็นไบต์ชนะ

ตัวอย่าง

เพื่อช่วยเหลือผู้ที่ไม่ต้องการคัดลอกขนมปังปิ้งจากที่อื่นนี่คือทั้งหมดของพวกเขาแยกออกเป็นอินพุทและเอาท์พุท

Input: Champagne for my real friends
Output: and real pain for my sham friends!

Input: Pseudopods for my real friends
Output: and real pods for my pseudo-friends!

Input: Petticoats for my real friends
Output: and real coats for my petty friends.

Input: Loosestrife for my real friends
Output: and real strife for my loose friends!

Input: Ladybugs for my real friends
Output: and real bugs for my lady friends!

Input: Single-payer for my real friends
Output: and RealPlayer for my single friends.

Input: Tumbleweeds for my real friends
Output: and real weed for my Tumblr friends!

Input: Fauxhawks for my real friends
Output: and real hawks for my faux friends!

Input: Platonic solids for my real friends
Output: and real solids for my platonic friends!

ฉันคิดว่าคุณพิมพ์ผิดที่Single-payer(แทนSingle-player)
Kevin Cruijssen

4
เควิน: Single-payerเลขที่มันคือเรื่องจริง
ivzem

@KevinCruijssen - อาจเป็นคำพิมพ์ผิด แต่ถ้าเป็นเช่นนั้น Randall @ XKCD's ไม่ใช่ ivzem มีการอภิปรายของมันในเป็นอธิบาย xkcd นอกจากนี้ ivzem - ทันทีที่ฉันเห็นชื่อในรายการ HNQ ฉันแน่ใจว่าคุณกำลังอ้างอิงถึงการ์ตูนนั้น ทำได้ดี!
Bobson

คำตอบ:


18

เรติน่า 119 ไบต์

รุ่นก่อนหน้าไม่ได้จัดการพื้นที่อย่างถูกต้องใน "ของแข็งอย่างสงบ" อันนี้ใช้งานได้และสั้นกว่า :)

ew
rw
eds
ed
(\w+) ?([^oatr ]\w{3}.+)real
and real $2$1
C
S
gne
in
o 
o-
ti
ty
T`TL`Tl
p\w+y.+
$&.
s$
s!
real -p
RealPl

ลองออนไลน์!

สิ่งนี้แปลงอินพุตเป็นเอาต์พุตผ่านชุดของการแทนที่

ส่วนที่น่าสนใจที่สุดคือการทดแทนนี้ (ชนิดของกอล์ฟ regex):

(\w+) ?([^oatr ]\w{3}.+)real
and real $2$1

ซึ่งทำงานเกือบทั้งหมดโดยแยกคำแรกวางชิ้นส่วนในตำแหน่งที่เหมาะสมลบช่องว่างเพิ่มเติมและสร้างโครงสร้างของเอาต์พุต ในการทำงานอย่างถูกต้องในกรณีทดสอบ "Tumbleweeds" ขึ้นอยู่กับการแทนที่ "eds" -> "ed" ก่อนหน้านี้

ส่วนที่เหลือส่วนใหญ่ประกอบด้วยการทดแทนที่จัดการกับกรณีพิเศษ ส่วนที่น่าสนใจอื่น ๆ ได้แก่ :

T`TL`Tl

สิ่งนี้จะเปลี่ยนทุกอย่างยกเว้น "T" (สำหรับ Tumblr) เป็นตัวพิมพ์เล็ก

p\w+y.+
$&.
s$
s!

สถานที่นี้เป็น "." ในตอนท้ายของแต่ละประโยคมีคำที่มี "y" ตัวอักษรบางตัวหลังจาก "p" ("อนุ" และ "ผู้จ่าย" ในทางปฏิบัติ) จากนั้นวาง "!" ในตอนท้ายของประโยคทั้งหมดที่ลงท้ายด้วย "s" (อื่น ๆ ทั้งหมด)


พิมพ์พื้นที่พิเศษหลังจากplatonicนี้ การแก้ไขที่แนะนำ: TIO (+5 ไบต์)
คณิตศาสตร์ junkie

1
@math_junkie ขอบคุณฉันได้อัปโหลดเวอร์ชันใหม่ซึ่งการแก้ไขปัญหาที่มีช่องว่างและมีแม้สั้น :)
สิงห์

10

Python 2, 291 269 293 255 247 ไบต์

ขอบคุณErik the Outgolferสำหรับการบันทึก 22 ไบต์!

+24 ไบต์ไปยังบัญชีสำหรับผลลัพธ์บางอย่างที่ลงท้ายด้วย.แทนที่จะเป็น!

lambda x:'and '+['real '+'pain%ssham ,pods%spseudo-,coats%spetty ,strife%sloose ,bugs%slady ,weed%sTumblr ,hawks%sfaux ,solids%splatonic '.split(',')['noarsekc'.find(x[7])],'RealPlayer%ssingle ']['-'in x]%' for my '+x[-7:]+'!.'['-'in x or'tt'in x]

วิธีง่ายๆในการเริ่มต้นสิ่งต่าง ๆ ตรวจสอบตัวอักษรที่แปดของอินพุตตามที่แนะนำในข้อคิดเห็นและค้นหาเอาต์พุตที่สอดคล้องกันในพจนานุกรมและอาร์เรย์

ลองออนไลน์!


คุณอาจลืมSingle-payer for my real friends...
Mathieu Rodic

@MathieuRodic ไม่นั่นเป็นเรื่องที่จงใจ RealPlayerเป็นกรณีพิเศษ
คณิตศาสตร์ junkie

โอ๊ะโอขออภัยอ่านเร็วเกินไป
Mathieu Rodic

6

SOGL , 143 ไบต์

_╔x⅜²‘,8WWAa"⅞+1Tλ²⅞ƨ◄…χŗbdŗu8ņ∑Ι⅓I‼hzΔμō┘═q‼xΘ▼²ηpG⅔─┌¡↕+wd÷[≈┐α┌ļ○(‚δΦEΤα{‚φ▒k׀:╚s&⅛↑»‘ |Θwθ1w"ρ└⁸‘S∆∫⁴‘a1>*+oo"¤Ε○Φr‘o2w _@ŗo"æn‘o"χ}49⁶‘aWT

สิ่งนี้ใช้สตริงนี้เป็นส่วนหลัก "|" ตัวแยกและ "_" เป็นตัวยึดพื้นที่เพื่อให้การแยกทำงานได้อย่างถูกต้อง

RealPlayer single_|weed Tumblr_|strife loose_|bugs lady_|pods pseudo-|pain sham_|solids platonic_|coats petty_|hawks faux_

ตัวอย่างอินพุต: "ของแข็งของแข็งสำหรับเพื่อนแท้ของฉัน" คำอธิบาย:

..‘,8WWAa"..‘ |Θwθ1w"..‘S∆∫⁴‘a1>*+oo"..‘o2w _@ŗo"..‘o"..‘aWT  strings shortened
..‘                                                           push "personcake" (the indexing string) ["personcake"]
    8W                                                        get the 8-th char                       
   ,                                                           from the input                         ["personcake", "c"]
      W                                                       get its in "personcake" (1-indexed)     [7]
       Aa                                                     save on variable A                      [7]
         "..‘                                                 push the long string                    [7, "RealPlayer...faux_"]
              |Θ                                              split on "|"                            [7, ["RealPlayer single_", ..., "hawks faux_"]]
                w                                             get the Ath item of the array           [["..."], "solids platonic_"]
                 θ                                            split on spaces                         [["..."], ["solids", "platonic_"]]
                  1w                                          get the 1st item                        [["..."], ["solids", "platonic_"], "solids"]
                    "..‘                                      push "and "                             [["..."], ["solids", "platonic_"], "solids", "and "]
                        S∆∫⁴‘                                 push "real "                            [["..."], ["solids", "platonic_"], "solids", "and ", "real "]
                             a1>*                             multiply by A(index) > 1                [["..."], ["solids", "platonic_"], "solids", "and ", "real "]
                                 +                            join together                           [["..."], ["solids", "platonic_"], "solids", "and real "]
                                  o                           output                                  [["..."], ["solids", "platonic_"], "solids"]
                                   o                          output (the 1st item of the array)      [["..."], ["solids", "platonic_"]]
                                    "..‘o                     output " for my "                       [["..."], ["solids", "platonic_"]]
                                         2w                   get the 2nd item of the array           [["..."], ["solids", "platonic_"], "platonic_"]
                                            _@ŗ               replace "_" with " "                    [["..."], ["solids", "platonic_"], "platonic "]
                                               o              output that                             [["..."], ["solids", "platonic_"]]
                                                "..‘o         output "friends"                        [["..."], ["solids", "platonic_"]]
                                                     "..‘     push ".!!!!!!.!"                        [["..."], ["solids", "platonic_"], ".!!!!!!.!"]
                                                         aW   get the Ath item                        [["..."], ["solids", "platonic_"], "!"]
                                                           T  output, disabling implicit output       [["..."], ["solids", "platonic_"]]

6

Python 3 , 788 , 403 , 359 396 ไบต์

รุ่นล่าสุด

นี่คือความพยายามครั้งที่ห้าของฉัน ฉันจัดการโปรแกรมดั้งเดิมของฉันให้มีขนาดครึ่งหนึ่งแล้ว ตอนนี้รวมถึงการขาด "-" และฉันเชื่อว่าเป็นคำตอบที่สมบูรณ์ ถึงกระนั้นฉันก็ยังสงสัยในด้านที่ใหญ่โต; แต่ใกล้เป้าหมายมาก ฉันมีความช่วยเหลือมากมาย ขอบคุณสำหรับคำแนะนำที่เป็นประโยชน์ทั้งหมด

s=input()
x=0
l= "Ch,pain,Sham,Ps,pods,psuedo-,Pe,coats,petty,Lo,strife,loose,La,bugs,lady,Si,RealPlayer,single,Tu,weed,Tumblr,Fa,hawks,faux,Pl,solids,platonic".split(",")
a,b,c,d,e,f,g,h = " and real","for my","friends",".!","print(a,l[p+1],b,l[p+2]",",c+d[0])","+c+d[1])",",c+d[1])"
for p in range(0,27,3):
 x+=1
 if s[:2] == l[p]:
  if x == 2: eval(e+g)
  else: eval(e+f if x in(3,6) else e+h)

ลองออนไลน์!


โพสต์ต้นฉบับ

นี่คือการโพสต์ครั้งแรกของฉันในรหัสกอล์ฟดังนั้นขออภัยล่วงหน้าสำหรับโปรแกรมเงอะงะของฉัน ไม่เห็นว่าโปรแกรมสามารถแปลง "แชมเปญ" เป็น "ความเจ็บปวด", "หลอกลวง" โดยแยกคำได้อย่างไร อย่างไรก็ตามฉันต้องการเห็นคนอื่นแก้ปัญหานั้น ดังนั้นเมื่อระดับความสามารถของฉันบอกว่าโปรแกรมของฉันจำเป็นต้องรู้ล่วงหน้าว่า "แชมเปญ" คือ "ความเจ็บปวด", "การหลอกลวง" ดูเหมือนว่าจะมีจุดเล็ก ๆ น้อย ๆ ในการเข้ารหัสคำขออินพุต ด้วยเหตุนี้ฉันจึงทิ้งมันไปและได้รับผลที่แท้จริงกับผลงานพิมพ์ของฉัน หวังว่าไม่เป็นไร :)

phraseList= [   ("Champagne","pain","Sham"), 
                ("Psudeopods","pods","psuedo-"), 
                ("Petticoats","coats","petty"),
                ("Loosestrife","strife","loose"),
                ("Ladybugs","bugs","lady"),
                ("Single-payer","coats","petty"),
                ("Petticoats","RealPlayer","single"),
                ("Tumbleweeds","weed","Tumblr"),
                ("Fauxhawks","hawks","faux"),
                ("Platonic solids","real solids","platonic")
                ]

for phrase in phraseList:
    print("Input: ",phrase[0], "for my real friends.")
    if "-" in phrase[2]:
        print("Output: and real", phrase[1], "for my", phrase[2]+ "friends!")
    else:
        print("Output: and real", phrase[1], "for my", phrase[2], "friends!")

3
จากศูนย์ช่วยเหลือ : โซลูชันทั้งหมดสู่ความท้าทายควร: [... ] เป็นผู้แข่งขันที่จริงจังสำหรับเกณฑ์การชนะที่ใช้งาน ตัวอย่างเช่นการเข้าร่วมการแข่งขันกอล์ฟรหัสจำเป็นต้องได้รับการตีกอล์ฟและการเข้าร่วมการแข่งขันความเร็วควรมีความพยายามอย่างรวดเร็ว
Erik the Outgolfer

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

คุณสามารถใส่ทั้งรายการข้อความในหนึ่งบรรทัดลดการเยื้องลงในหนึ่งช่องว่างวางการพิมพ์เข้าด้วยกันในหนึ่งบรรทัดด้วย if and else และช่องว่างในการพิมพ์ไม่จำเป็น อย่างไรก็ตามฉันไม่ทราบว่าคุณได้รับอนุญาตให้พิมพ์ผลงานทั้งหมดหรือไม่
Mega Man

1
สวัสดี! ดูเหมือนว่านี่เป็นคำตอบรหัสกอล์ฟครั้งแรกของคุณ น่าเสียดายที่คุณดูเหมือนจะเข้าใจผิดคำถามโดยเฉพาะตาราง "ตัวอย่าง" ที่ด้านล่างซึ่งแสดงให้เห็นว่าแต่ละอินพุตควรจับคู่กับเอาต์พุตที่เกี่ยวข้องอย่างไร ขณะนี้โปรแกรมของคุณเพิ่งพิมพ์ตารางนั้น _ นอกจากนี้ยังเป็นวิธีปฏิบัติมาตรฐานในการวางโค้ดของคุณในบล็อครหัส (เลือกแล้วคลิก {}) เพื่อให้อ่านง่ายขึ้นและพูดถึงภาษาที่คุณเลือกและจำนวนไบต์เนื่องจากไซต์นี้เป็น เป็นเหมือนการแข่งขันมากกว่าไซต์ถาม - ตอบ _ ตัวช่วยสร้างข้าวสาลีทำสิ่งนั้นได้ดีกว่า
ivzem

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

6

โรดา , 299 292 288 259 ไบต์

4 ไบต์บันทึกขอบคุณที่ @fergusq สำหรับใช้,แทน..ในpushงบ

ไบต์ที่บันทึกไว้ต้องขอบคุณ @fergusq ที่แสดงวิธีการของฉัน indexOf

h a{r=indexOf(a[7:8],"noarspekc")A="pain>pods>coats>strife>Player>bugs>weed>hawks>solids>sham >pseudo->petty >loose >lady >single >Tumblr >faux >platonic >!>!>.>!>!>.>!>!>!"/">";["and "];["Real"]if[r=4]else["real "];[A[r]," for my ",A[r+9],"friends",A[r+18]]}

ลองออนไลน์!

ใกล้กับ Python ... ใกล้มาก .... ท่าของคุณ Python

คำอธิบาย

h a{
  r=indexOf(a[7:8],"noarspekc")  /*Gets the index of the character in this string*/
  /*Variable A contains all the unique words for each test case*/
  A="pain>pods>coats>strife>Player>bugs>weed>hawks>solids>sham >pseudo->petty >loose >lady >single >Tumblr >faux >platonic >!>!>.>!>!>.>!>!>!"/">"
  ["and "]
  ["Real"]if[r=4]else["real "]   /*RealPlayer*/
  [A[r]," for my ",A[r+9],"friends",A[r+18]]   /*Print everything using var A*/
}

คุณสามารถบันทึกหนึ่งไบต์โดยใช้การประมาณสตริงในคำสั่งสุดท้ายได้หรือไม่ แก้ไข: จริง ๆ แล้ววิธีที่สั้นที่สุดน่าจะเป็นไปได้ที่จะส่งสตริงจำนวนมากไปยังสตรีมแทนที่จะเป็นสตริงเดียว แทนที่ด้วย.. ,
fergusq

@fergusq ขอบคุณสำหรับเคล็ดลับ!
Kritixi Lithos

r=indexOf(a[7:8],"noarspekc")นอกจากนี้คุณก็สามารถใช้
fergusq

@fergusq อ่าฉันไม่ทราบว่ามีตัวอาคารอยู่จริง ขอบคุณ!
Kritixi Lithos

5

JavaScript (ES6), 230 228 221 216 ไบต์

s=>'and '+((n='paonrsekc'.search(s[7]))?'real ':'')+'RealPl740s5 /450p3y /540p5-/pain0s3 /460l4 /340l3 /540T4r /350f3 /860p7 '.split`/`[n].replace(/\d\d?/g,n=>s.substr(n/10+1,n%10)||' for my ')+'friends'+'.!'[+(n>1)]

ทดสอบ


3

PHP, 202 220 204 203 203 ไบต์

and real <?=[pods,solids,hawks,strife,RealPlayer,pain,bugs,weed,coats][$q=md5($argv[1].LnI)%9].' for my '.[pseudo,platonic,faux,loose,single,sham,lady,Tumblr,petty][$q].' -'[!$q].friends.'.!'[!$q||$q&3];

3

Perl, 173 168 ไบต์

การลบบรรทัดใหม่และการเยื้องนี่จะกลายเป็นรหัส 173 ไบต์ของ Perl5 ลงคอ regexp ครั้งแรกจากคำตอบที่จอประสาทตาของ Leo (ของฉันเป็นตัวอักษรอีกสองสามตัว)

sub f{
  my($_)=@_;
  s,(\S+[oieyxm ])(\S{4}.+)real,and real $2\l$1,;
  s,gne,in,;
  s,ch,sh,;
  s,ti,ty,;
  s,eds,ed,;
  s,tumble,Tumblr,;
  s,real -p,RealPl,;
  s,o ,o-,;
  s,c ,c,;
  /ng|tt/?"$_.":"$_!"
}

สำหรับรุ่น perl5> = 5.14 สามารถลบออกได้อีก 5 ไบต์ด้วย eval และตัวปรับชดเชยการแทนที่ใหม่ / r regexp ลงท้ายด้วย 168 ไบต์:

sub f{my($_)=@_;eval's,(\S+[oieyxm ])(\S{4}.+)real,and real $2\l$1Xgne,inXch,shXti,tyXeds,edXtumble,TumblrXreal -p,RealPlXo ,o-Xc ,c,;/ng|tt/?"$_.":"$_!"'=~s/X/,;s,/gr}

ลองออนไลน์!


2

C, 367 ไบต์

ไม่ได้จบลงอย่างสั้นตามที่ควร

i,j,c;f(char*s){c=s[7]-97;char t[9],u[200];char*r=s;s+=j=c&&c-17?c-10&&c-18?c-2?5:8:3:4;for(i=0;*++s-32;t[i++]=*s);t[c-4?i:i-1]=0;for(i=0;*r++-t[0];)u[i++]=*(r-1);u[i]=32;u[i+1]=0;u[0]+=32;u[c?i:i-1]=c?c-2?c-14?32:45:0:121;printf("and %s%s for my %sfriends%c",c-15?"real ":"RealPlayer",c-15?c-13?t:"pain":"",c-13?c-4?c-17?u:"loose ":"Tumblr ":"sham ",c&&c-15?33:46);}

2

Java 7, 585 553 ไบต์

import java.util.*;String c(String s){Map m=new HashMap(){{put("Ch","pain");put("Ps","pods");put("Pe","coats");put("Lo","strife");put("La","bugs");put("Si","Player");put("Tu","weed");put("Fa","hawks");put("Pl","solids");put("Ch1","sham ");put("Ps1","pseudo-");put("Pe1","petty ");put("Lo1","loose ");put("La1","lady ");put("Si1","single ");put("Tu1","Tumblr ");put("Fa1","faux ");put("Pl1","platonic ");}};String r=s.substring(0,2);int c=r.charAt(1);return"and "+(c=='i'?"Real":"real ")+m.get(r)+" for my "+m.get(r+1)+"friends"+(c=='i'|c=='e'?'.':'!');}

-32 ไบต์ขอบคุณที่@Zircon

สามารถเล่นกอล์ฟได้โดยใช้สิ่งที่แตกต่างจากแผนที่ ..

คำอธิบาย:

import java.util.*;            // Import required for the Map & HashMap
String c(String s){            // Method with String parameter and String return-type
  Map m=new HashMap(){{        //  The Map
    put("Ch","pain");put("Ps","pods");put("Pe","coats");put("Lo","strife");put("La","bugs");put("Si","Player");put("Tu","weed");put("Fa","hawks");
                               //  Add mapping from first two characters with first word
    put("Ch1","sham ");put("Ps1","pseudo-");put("Pe1","petty ");put("Lo1","loose ");put("La1","lady ");put("Si1","single ");put("Tu1","Tumblr ");put("Fa1","faux ");put("Pl1","platonic ");
                               //  Add mapping from first two characters + "1" with second word (+ space or '-' for edge-case `pseudo-friends`)
  }};                          // End of Map initialization
  String r=s.substring(0,2);   //  Get the first two characters of the input String
  int c=r.charAt(1);           //  Get the second character
  return "and "                //  return "and "
    + (c=='i'?"Real":"real ")  //   + "Real" or "real " for edge-case `RealPlayers`
    + m.get(r)                 //   + first word from Map
    + " for my "               //   + " for my "
    + m.get(r+1)               //   + second word from Map
    + "friends"                //   + "friends"
    + (c=='i'|c=='e' ? '.'     //   + '.' for edge-cases 'Petticoats' and 'Single-player
      : '!');                  //     or '!' for all other cases
}                              // End of method

รหัสทดสอบ:

ลองที่นี่ (ideone.com ถูกบั๊กเมื่อเร็ว ๆ นี้ดังนั้นฉันใช้ TIO ตอนนี้ .. )

import java.util.*;
class M{
  static String c(String s){Map m=new HashMap();m.put("Ch","pain");m.put("Ps","pods");m.put("Pe","coats");m.put("Lo","strife");m.put("La","bugs");m.put("Si","Player");m.put("Tu","weed");m.put("Fa","hawks");m.put("Pl","solids");m.put("Ch1","sham ");m.put("Ps1","pseudo-");m.put("Pe1","petty ");m.put("Lo1","loose ");m.put("La1","lady ");m.put("Si1","single ");m.put("Tu1","Tumblr ");m.put("Fa1","faux ");m.put("Pl1","platonic ");String r=s.substring(0,2);int c=r.charAt(1);return"and "+(c=='i'?"Real":"real ")+m.get(r)+" for my "+m.get(r+1)+"friends"+(c=='i'|c=='e'?'.':'!');}

  public static void main(String[] a){
    System.out.println(c("Champagne for my real friends"));
    System.out.println(c("Pseudopods for my real friends"));
    System.out.println(c("Petticoats for my real friends"));
    System.out.println(c("Loosestrife for my real friends"));
    System.out.println(c("Ladybugs for my real friends"));
    System.out.println(c("Single-player for my real friends"));
    System.out.println(c("Tumbleweeds for my real friends"));
    System.out.println(c("Fauxhawks for my real friends"));
    System.out.println(c("Platonic solids for my real friends"));
  }
}

1
ฉันคิดว่าคุณสามารถบันทึกไบต์โดยใช้การเริ่มต้นคู่รั้งและแทนput m.put
Zircon

2

C (gcc) , 311 ไบต์

รูปแบบที่ชัดเจน แต่มีข้อยกเว้นมากมาย ถึงกระนั้นก็ต้องมีวิธีที่ดีกว่านี้!

f(char*s){char*t="\"5$#(=931",*r[]={"pain", "sham","pods","pseudo","coats","petty","strife","loose","bugs","lady","Player","single","weed","Tumblr","hawks","faux","solids","platonic"};int i=strchr(t,*s^s[2])-t;printf("and %s%s for my %s%cfriends%c",i^5?"real ":"Real",r[i*2],r[i*2+1],i^1?32:45,i^5&&i^2?33:46);}

ลองออนไลน์!

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