จั่วไพ่ ASCII


19

พิจารณารูปแบบบัตรเล่น 15 ASCII เหล่านี้(เอซผ่านโจ๊กเกอร์และด้านหลัง) ซึ่งXเป็นตัวยึดตำแหน่งสำหรับสัญลักษณ์สูท : (ดูดีขึ้นโดยเว้นระยะบรรทัดน้อยกว่า)

 -------------   -------------   -------------   -------------   -------------   -------------   -------------   -------------   -------------   -------------   -------------   -------------   -------------   -------------   ------------- 
|AX           | |2X           | |3X           | |4X           | |5X           | |6X           | |7X           | |8X           | |9X           | |10X          | |JX           | |QX           | |KX           | |J            | |* * * * * * *|
|   -------   | |   -------   | |   -------   | |   -------   | |   -------   | |   -------   | |   -------   | |   -------   | |   -------   | |   -------   | |   -------   | |   -------   | |   -------   | |O  -------   | | * * * * * * |
|  |       |  | |  |       |  | |  |       |  | |  |X     X|  | |  |X     X|  | |  |X     X|  | |  |X     X|  | |  |X     X|  | |  |X     X|  | |  |X     X|  | |  |X      |  | |  |X      |  | |  |X      |  | |K |       |  | |* * * * * * *|
|  |       |  | |  |   X   |  | |  |   X   |  | |  |       |  | |  |       |  | |  |       |  | |  |   X   |  | |  |   X   |  | |  |       |  | |  |   X   |  | |  |       |  | |  |       |  | |  |       |  | |E | J     |  | | * * * * * * |
|  |       |  | |  |       |  | |  |       |  | |  |       |  | |  |       |  | |  |       |  | |  |       |  | |  |       |  | |  |X     X|  | |  |X     X|  | |  |       |  | |  |       |  | |  |       |  | |R |  O    |  | |* * * * * * *|
|  |   X   |  | |  |       |  | |  |   X   |  | |  |       |  | |  |   X   |  | |  |X     X|  | |  |X     X|  | |  |X     X|  | |  |   X   |  | |  |       |  | |  |   J   |  | |  |   Q   |  | |  |   K   |  | |  |   K   |  | | * * * * * * |
|  |       |  | |  |       |  | |  |       |  | |  |       |  | |  |       |  | |  |       |  | |  |       |  | |  |       |  | |  |X     X|  | |  |X     X|  | |  |       |  | |  |       |  | |  |       |  | |  |    E  | J| |* * * * * * *|
|  |       |  | |  |   X   |  | |  |   X   |  | |  |       |  | |  |       |  | |  |       |  | |  |       |  | |  |   X   |  | |  |       |  | |  |   X   |  | |  |       |  | |  |       |  | |  |       |  | |  |     R | O| | * * * * * * |
|  |       |  | |  |       |  | |  |       |  | |  |X     X|  | |  |X     X|  | |  |X     X|  | |  |X     X|  | |  |X     X|  | |  |X     X|  | |  |X     X|  | |  |      X|  | |  |      X|  | |  |      X|  | |  |       | K| |* * * * * * *|
|   -------   | |   -------   | |   -------   | |   -------   | |   -------   | |   -------   | |   -------   | |   -------   | |   -------   | |   -------   | |   -------   | |   -------   | |   -------   | |   -------  E| | * * * * * * |
|           XA| |           X2| |           X3| |           X4| |           X5| |           X6| |           X7| |           X8| |           X9| |          X10| |           XJ| |           XQ| |           XK| |            R| |* * * * * * *|
 -------------   -------------   -------------   -------------   -------------   -------------   -------------   -------------   -------------   -------------   -------------   -------------   -------------   -------------   ------------- 

เขียนโปรแกรมที่ใช้ในสตริงที่แสดงถึงลำดับช่องว่างของการ์ดโดยใช้ ...

  • A 2 3 4 5 6 7 8 9 10 J Q Kตามด้วยหนึ่งในC D H S(สำหรับสโมสรเพชรหัวใจและโพดำ) สำหรับการ์ดมาตรฐาน 52 ใบ
  • เดี่ยวRสำหรับโจ๊กเกอร์
  • ด้านเดียวBสำหรับด้านหลัง (การ์ดคว่ำหน้าลง)

ดังนั้นสตริงจึงB AS KH 10C R JDแสดงถึงการ์ดคว่ำหน้าตามด้วยเอซโพดำตามด้วยราชาแห่งหัวใจตามด้วยสิบคลับตามด้วยโจ๊กเกอร์ตามด้วยแจ็คเพชร

โปรแกรมของคุณจำเป็นต้องพิมพ์บัตรเล่น ASCII ที่สอดคล้องกันเพื่อ stdout แทนที่Xด้วยสัญลักษณ์สูทที่เหมาะสม

ตัวอย่างเช่นผลลัพธ์สำหรับB AS KH 10C R JDจะเป็น

 -------------   -------------   -------------   -------------   -------------   ------------- 
|* * * * * * *| |AS           | |KH           | |10C          | |J            | |JD           |
| * * * * * * | |   -------   | |   -------   | |   -------   | |O  -------   | |   -------   |
|* * * * * * *| |  |       |  | |  |H      |  | |  |C     C|  | |K |       |  | |  |D      |  |
| * * * * * * | |  |       |  | |  |       |  | |  |   C   |  | |E | J     |  | |  |       |  |
|* * * * * * *| |  |       |  | |  |       |  | |  |C     C|  | |R |  O    |  | |  |       |  |
| * * * * * * | |  |   S   |  | |  |   K   |  | |  |       |  | |  |   K   |  | |  |   J   |  |
|* * * * * * *| |  |       |  | |  |       |  | |  |C     C|  | |  |    E  | J| |  |       |  |
| * * * * * * | |  |       |  | |  |       |  | |  |   C   |  | |  |     R | O| |  |       |  |
|* * * * * * *| |  |       |  | |  |      H|  | |  |C     C|  | |  |       | K| |  |      D|  |
| * * * * * * | |   -------   | |   -------   | |   -------   | |   -------  E| |   -------   |
|* * * * * * *| |           SA| |           HK| |          C10| |            R| |           DJ|
 -------------   -------------   -------------   -------------   -------------   ------------- 

คุณสามารถรับอินพุตจาก stdin หรือเขียนฟังก์ชันที่รับสตริง

การส่งที่มีจำนวนอักขระสั้นที่สุดจะชนะ

โบนัส:ลบออก30จากจำนวนตัวละครของคุณหากคุณใช้สัญลักษณ์ชุดยูนิโค้ด ดำ♣ ♦ ♥ ♠แทนการแสดงผลของC D H Sคุณ (อินพุตใช้เสมอC D H S)

หมายเหตุ

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

1
เราสามารถสมมติว่าสตริงอินพุตนั้นใช้ได้หรือไม่?
Michael M.

1
@VisualMelon ฉันลองมัน แต่มันดูตลกดี มันจะอยู่ตัวตรง
งานอดิเรกของ Calvin

3
@Optimizer ฉันจะทำอย่างนั้นถ้ามีตัวละครที่ถูกกำหนดไว้สำหรับสิ่งที่ฉันต้องการ แต่ฉันไม่คิดว่าจะมีและฉันไม่ต้องการมันทั้งหมดที่ไร้สาระ
งานอดิเรกของ Calvin

2
@VisualMelon ฉันรู้ว่าครึ่งหนึ่งของฉลากสมจริงจะกลับหัวกลับหาง แต่เนื่องจากไม่มีตัวละครกลับหัวกลับหางเพราะฉันไม่สนใจความจริงนั้น (นอกเหนือจากที่ฉันต้องการค่ามุม)
งานอดิเรกของ Calvin

1
หากคุณเพียงลบ 10 คะแนนสำหรับการ Unicode สัญลักษณ์อย่างถูกต้องจะไม่คุ้มเพราะคุณต้องเขียนมากกว่านั้น (6 ตัวอักษรต่อสัญลักษณ์ 24 ตัว) แม้ว่าคุณจะมีภาษาที่สอดคล้องกับยูนิโค้ดสัญลักษณ์ยูนิโค้ดอยู่ในลำดับย้อนกลับจากอินพุตของคุณเมื่อเรียงตามตัวอักษร ฉันคิดว่ามีเพียงสิ่งเดียวเช่น CJAM, APL หรือ Golfscript เท่านั้นที่สามารถทำได้
Nzall

คำตอบ:


9

JavaScript (E6) 542 (572 - โบนัส 30) 553 564 576

รูปทรง 3 ชนิด:

  1. Back and Joker: ตัวอักษรไม่มากก็น้อย
  2. JQK: ทำเครื่องหมายที่ด้านบนและด้านขวาด้านในกรอบด้านในและ 3 ชนิดของแถวภายในเสมอโครงสร้างเดียวกัน
  3. ตอบ ... 10: ทำเครื่องหมายที่ด้านบนและด้านขวากรอบด้านในที่มีแถวอยู่ 3 ชนิดแปรผันตามค่าตัวเลข ดูแลด้วยการค้นหาโดยใช้อาร์เรย์และตัวแปร q

zสตริง (บีบอัด) มีหน่วยการสร้างพื้นฐานสำหรับ

  • บัตรตัวเลข - 3 บล็อก 7 ตัวอักษรต่อตัว
  • โจ๊กเกอร์ - 11 บล็อก, 13 ถ่านแต่ละตัวใช้ในการเรียงลำดับ

หมายเหตุโบนัสรหัสสำหรับการได้รับโบนัส 30 คะแนนคือ 29 ตัวอักษร

F=c=>(
  p='|',b=' ',d=b+b,t=d+b,
  S='substr',
  z="9J2J4J55O102K |6|1E | J4|1R |1O3|3|2K2|3|3E1| J1|4R | O1|6| K201E55R".replace(/\d/g,n=>n++?b.repeat(n):l='-------'),
  i=7,
  console.log([c.split(b).map(c=>
    m<d
      ?b+l+l[S](1)+b 
      :p+(c=='B'
        ?'* '.repeat(i)[S](i,13)
        :c=='R'
          ?z[S](i,13)
          :(
             [,h,k]=c.match(/(.+)(.)/),
             k='♣♦♥♠'['CDHS'.search(k)], //comment to avoid the unicode symbols 
             n=h-1|0,
             s=t+t+t+(n>8?b:d),
             m-7
              ?m-8
                ?m-9
                  ?d+p+(h>'A'
                     ?-m?m-6?m-3?t+b+t:t+h+t:t+t+k:k+t+t
                     :z[S](([64,1028,1092,8194,8258,8322,8326,9350,8802,9766][n]>>m*2&3)*7,7).replace(/J/g,k)
                   )+p+d
                  :t+l+t
                :s+k+h
              :h+k+s
            )
       )+p
    ).join(b,i+=13)
  for(m of ' 79012345698 ')].join('\n'))
)

ทดสอบในคอนโซล FireFox / FireBug

F('10C JD QH KS AC B R')

F('2C 3D 4H 5S 6C 7D 8H 9S')

เอาท์พุต

 -------------   -------------   -------------   -------------   -------------   -------------   ------------- 
|10♣          | |J♦           | |Q♥           | |K♠           | |A♣           | |* * * * * * *| |J            |
|   -------   | |   -------   | |   -------   | |   -------   | |   -------   | | * * * * * * | |O  -------   |
|  |♣     ♣|  | |  |♦      |  | |  |♥      |  | |  |♠      |  | |  |       |  | |* * * * * * *| |K |       |  |
|  |   ♣   |  | |  |       |  | |  |       |  | |  |       |  | |  |       |  | | * * * * * * | |E | J     |  |
|  |♣     ♣|  | |  |       |  | |  |       |  | |  |       |  | |  |       |  | |* * * * * * *| |R |  O    |  |
|  |       |  | |  |   J   |  | |  |   Q   |  | |  |   K   |  | |  |   ♣   |  | | * * * * * * | |  |   K   |  |
|  |♣     ♣|  | |  |       |  | |  |       |  | |  |       |  | |  |       |  | |* * * * * * *| |  |    E  | J|
|  |   ♣   |  | |  |       |  | |  |       |  | |  |       |  | |  |       |  | | * * * * * * | |  |     R | O|
|  |♣     ♣|  | |  |      ♦|  | |  |      ♥|  | |  |      ♠|  | |  |       |  | |* * * * * * *| |  |       | K|
|   -------   | |   -------   | |   -------   | |   -------   | |   -------   | | * * * * * * | |   -------  E|
|          ♣10| |           ♦J| |           ♥Q| |           ♠K| |           ♣A| |* * * * * * *| |            R|
 -------------   -------------   -------------   -------------   -------------   -------------   ------------- 

 -------------   -------------   -------------   -------------   -------------   -------------   -------------   ------------- 
|2♣           | |3♦           | |4♥           | |5♠           | |6♣           | |7♦           | |8♥           | |9♠           |
|   -------   | |   -------   | |   -------   | |   -------   | |   -------   | |   -------   | |   -------   | |   -------   |
|  |       |  | |  |       |  | |  |♥     ♥|  | |  |♠     ♠|  | |  |♣     ♣|  | |  |♦     ♦|  | |  |♥     ♥|  | |  |♠     ♠|  |
|  |   ♣   |  | |  |   ♦   |  | |  |       |  | |  |       |  | |  |       |  | |  |   ♦   |  | |  |   ♥   |  | |  |       |  |
|  |       |  | |  |       |  | |  |       |  | |  |       |  | |  |       |  | |  |       |  | |  |       |  | |  |♠     ♠|  |
|  |       |  | |  |   ♦   |  | |  |       |  | |  |   ♠   |  | |  |♣     ♣|  | |  |♦     ♦|  | |  |♥     ♥|  | |  |   ♠   |  |
|  |       |  | |  |       |  | |  |       |  | |  |       |  | |  |       |  | |  |       |  | |  |       |  | |  |♠     ♠|  |
|  |   ♣   |  | |  |   ♦   |  | |  |       |  | |  |       |  | |  |       |  | |  |       |  | |  |   ♥   |  | |  |       |  |
|  |       |  | |  |       |  | |  |♥     ♥|  | |  |♠     ♠|  | |  |♣     ♣|  | |  |♦     ♦|  | |  |♥     ♥|  | |  |♠     ♠|  |
|   -------   | |   -------   | |   -------   | |   -------   | |   -------   | |   -------   | |   -------   | |   -------   |
|           ♣2| |           ♦3| |           ♥4| |           ♠5| |           ♣6| |           ♦7| |           ♥8| |           ♠9|
 -------------   -------------   -------------   -------------   -------------   -------------   -------------   ------------- 

ไม่ใช่รหัส golfed

F=c=>
{
  p='|',b=' ',d=b+b,t=d+b;
  l='------';
  z="9X2X4XJ55O10-2K |6|1E | J4|1R |1O3|3|2K2|3|3E1| J1|4R | O1|6| K20-1E55R".replace(/\d/g,n=>-n?b.repeat(-~n):l);
  c=c.split(b);
  for(o=i=''; c[0]&&i<13; i++)
  {
    o+=c.map(c => {
      if (i==0 || i==12) r=' -'+l+l+b;
      else
      {
        if (c=='B') r=' *'.repeat(7).substr(i&1,13);
        else if (c=='R') r=z.substr(i*13+8,13);
        else {
          [,h,k]=c.match(/(.+)(.)/),n=h-1|0,
          k='♣♦♥♠'[{C:0,D:1,H:2,S:3}[k]],
          r=t+t+t+(n>8?b:d);
          if(i==1)r=h+k+r;
          else if(i==11)r+=k+h;
          else if(i==2||i==10)r=t+'-'+l+t;
          else {
            if (h>'A')
            {
              if(i==3)r=k+t+t;
              else if(i==9)r=t+t+k;
              else if(i==6)r=t+h+t;
              else r=t+b+t
            }
            else 
            { 
              q=[64,1028,1092,8194,8258,8322,8326,9350,8802,9766][n]>>(i+i-6)&3,
              r=z.substr(q*7,7).replace(/X/g,k)
            }
            r=d+p+r+p+d
          }
        }
        r=p+r+p
      }
      return r
    }).join(' ')+'\n'
  }  
  console.log(o);
}

ฉันคิดว่าคุณเปลี่ยนหัวใจและเพชร (ในตัวอย่างของคุณทำงานต่อไปฉันไม่สามารถหาข้อผิดพลาดในรหัสของคุณ ... )
FryAmTheEggman

@FryAmTheEggman ขอบคุณคงที่ในรหัส
golfed

รหัสที่ดี! คุณสามารถลดจำนวนถ่านของคุณด้วยเครื่องมือนี้: xem.github.io/obfuscatweet (ยอมรับได้เพียง ASCII เท่านั้นดังนั้นคุณต้องหลบเลี่ยงตัวอักษร unicode ก่อนบรรจุ)
xem

(ผลลัพธ์สุดท้ายของคุณจะอยู่ที่ประมาณ 328!)
xem

@xem นับถ่านอยู่ในระดับต่ำ (337) แต่นับไบต์สูง (1213) mothereff.in/byte-counter หากไม่ได้ระบุไว้คุณจะต้องนับไบต์ในการตีกอล์ฟ
edc65

4

C # - 906

ค่อนข้างใหญ่และเรียบง่ายโปรแกรม C # ที่รับอินพุตและเอาต์พุตบรรทัดคำสั่งไปยังเอาต์พุตมาตรฐาน อาจมีหลายสิ่งที่ยังคงสามารถเล่นกอล์ฟได้ฉันพบไบต์ที่น่าเบื่อเล็กน้อยในขณะที่เขียนสิ่งนี้ แต่นั่นจะต้องรอ ฉันไม่คิดว่าฉันจะไปรับโบนัสชุดอักขระ Unicode

รหัส Golfed:

class P{static void Main(string[]A){int O,i=0,L,n;for(;i<13;i++){var k="";foreach(var a in A){var R=new char[208];System.Action<int,int,string,int>P=(s,l,g,w)=>{for(O=0;O<l;s+=O%w<1?17-w:1)R[s]=g[O++%g.Length];};P(0,208," ",16);P(1,13,"-",13);P(193,13,"-",13);P(16,11,"|",1);P(30,11,"|",1);if(a=="B")P(17,143,"* ",13);else{P(36,7,"-",7);P(164,7,"-",7);P(51,7,"|",1);P(59,7,"|",1);if(a=="R"){P(17,5,"JOKER",1);P(125,5,"JOKER",1);P(69,25,"J     O     K     E     R",5);}else{L=a.Length;var S=a.Substring(L-1);var v=a.Substring(0,L-1);P(17,L,a,L);P(190-L,L,S+v,L);if(int.TryParse(v,out n)){var f=new string[]{S="HEHI",S+"HG",S="EDKDEJKJ",S+"HG",v=S+"EGKG",v+="HE",v+"HI",(S+="EFEHKFKH")+"HG",S+"HEHI",}[n-2];for(O=0;O<f.Length;)R[f[O++]+f[O++]*16-1105]=a[L-1];}else{if(v=="A"){P(103,1,S,1);}else{P(52,1,S,1);P(154,1,S,1);P(103,1,v,1);}}}}for(O=0;O<16;)k+=R[i*16+O++];}System.Console.WriteLine(k.TrimEnd());}}}

ตัวอย่างผลลัพธ์สำหรับ cardGolf.exe 7H QH 3S B R

 -------------   -------------   -------------   -------------   -------------
|7H           | |QH           | |3S           | |* * * * * * *| |J            |
|   -------   | |   -------   | |   -------   | | * * * * * * | |O  -------   |
|  |H     H|  | |  |H      |  | |  |       |  | |* * * * * * *| |K |       |  |
|  |   H   |  | |  |       |  | |  |   S   |  | | * * * * * * | |E | J     |  |
|  |       |  | |  |       |  | |  |       |  | |* * * * * * *| |R |  O    |  |
|  |H     H|  | |  |   Q   |  | |  |   S   |  | | * * * * * * | |  |   K   |  |
|  |       |  | |  |       |  | |  |       |  | |* * * * * * *| |  |    E  | J|
|  |       |  | |  |       |  | |  |   S   |  | | * * * * * * | |  |     R | O|
|  |H     H|  | |  |      H|  | |  |       |  | |* * * * * * *| |  |       | K|
|   -------   | |   -------   | |   -------   | | * * * * * * | |   -------  E|
|           H7| |           HQ| |           S3| |* * * * * * *| |            R|
 -------------   -------------   -------------   -------------   -------------

การเรนเดอร์ส่วนใหญ่ทำได้โดยPวิธีที่ไม่ระบุตัวตนซึ่งรับตำแหน่งความยาวสตริงและความกว้างและแสดงผลสี่เหลี่ยมของจุดสิ้นสุดของสตริงที่สิ้นสุด ตัวอย่างเช่นด้านหลังของบัตร"* "ซ้ำแล้วซ้ำอีก Tวิธีการที่ไม่ระบุชื่อเป็นรุ่นที่แก้ไขของหนึ่งผมใช้สำหรับงานก่อนหน้านี้ซึ่งทำให้จำนวนมากของรูปสี่เหลี่ยม อย่างไรก็ตามมันค่อนข้างใหญ่และจะอนุญาตให้ฉันแสดงเส้นขอบและพื้นหลังด้วยจำนวนไบต์น้อยกว่าซึ่งอาจไม่คุ้มค่า ลายลงรุ่นTมีที่Wซึ่งทำให้เซลล์มากกว่าสี่เหลี่ยมและยังไม่ได้ใช้ แต่รุ่น inlined ของมันจะถูกใช้ในการแสดงบัตรที่มีมูลค่า 2 ถึง 10 หมายเหตุว่ารหัสไม่ได้ใช้เป็น ลบออกสำหรับจำนวนไบต์ฉันจะปล่อยไว้เพราะฉันอาจจะใช้มันและฉันจะใช้มันสำหรับการทดสอบ

โปรแกรมวนลูปผ่านเอาท์พุทแต่ละบรรทัด (13 อัน) จากนั้นแสดงผลแต่ละการ์ดแล้วแยก 1 ชิ้นจากมันดังนั้นแต่ละการ์ดจะเรนเดอร์ทั้งหมด 13 ครั้ง เพื่อวัตถุประสงค์ในการเว้นช่องว่างการ์ดแต่ละใบจะถือว่าเป็นบล็อกขนาด 16 x 13 และฉันตัดแต่ละบรรทัดของเอาต์พุตเพื่อลบช่องว่างต่อท้าย (ช่องว่างมุมจะถูกลบออก)

รหัสที่จัดรูปแบบพร้อมความคิดเห็นและแนวคิด / รหัสทดสอบ:

class P
{
    static void Main(string[]A)
    {
        int O,J,i=0,L,n,r,z;

        for(;i<13;i++)
        {
            var k="";
            foreach(var a in A)
            {
                // got card a and line i

                var R=new char[208];

                System.Action<int,int,string,int>P=(s,l,g,w)=>
                {
                    for(O=0;O<l;s+=O%w<1?17-w:1)
                        R[s]=g[O++%g.Length];
                };

                // not used
                System.Action<string>T=f=>
                {
                    f+="AAPM!";
                    for(J=64;J++<77;)
                        for(O=64;O++<80;R[z=O+J*16-1105]=f[r]=='!'?R[z]:f[r])
                            for(r=0;f[r++]>O|f[r++]>J|O>f[r++]|J>f[r++];r++);
                };

                // not used (derivative below)
                System.Action<string>W=f=>
                {
                    for(O=0;O<f.Length;)
                        R[f[O++]+f[O++]*16-1105]=f[O++];
                };

                // render

                // outer

                P(0,208," ",16); // fill 
                P(1,13,"-",13); // top
                P(193,13,"-",13); // bottom
                P(16,11,"|",1); // left
                P(30,11,"|",1); // left

                //T("BBNL BANM-ABOL|AAPM ");

                if(a=="B") // back
                    P(17,143,"* ",13);
                else
                {
                    // inner

                    P(36,7,"-",7); // top
                    P(164,7,"-",7); // bottom
                    P(51,7,"|",1); // left
                    P(59,7,"|",1); // left

                    //T("EDKJ ECKK-DDLJ|");

                    // joker
                    if(a=="R")
                    {
                        P(17,5,"JOKER",1);
                        P(125,5,"JOKER",1);
                        P(69,25,"J     O     K     E     R",5);
                        //T("FEFEJGFGFOHGHGKIHIHEJIJIR");
                    }
                    else
                    {
                        L=a.Length;

                        // card
                        var S=a.Substring(L-1);
                        var v=a.Substring(0,L-1);

                        P(17,L,a,L);
                        P(190-L,L,S+v,L);

                        if(int.TryParse(v,out n))
                        {
                            // number card
                            var f=new string[]
                            {
                                S="HEHI",
                                S+"HG",
                                S="EDKDEJKJ",
                                S+"HG",
                                v=S+"EGKG",
                                v+="HE",
                                v+"HI",
                                (S+="EFEHKFKH")+"HG",
                                S+"HEHI",
                            }[n-2];
                            for(O=0;O<f.Length;)
                                R[f[O++]+f[O++]*16-1105]=a[L-1];
                        }
                        else
                        {
                            if(v=="A")
                            {
                                // ace
                                P(103,1,S,1);
                            }
                            else
                            {
                                // face card
                                P(52,1,S,1);
                                P(154,1,S,1);
                                P(103,1,v,1);
                            }
                        }
                    }
                }

                // write

                for(O=0;O<16;)
                    k+=R[i*16+O++];
            }
            System.Console.WriteLine(k.TrimEnd());
        }
    }
}

1

PowerShell , คะแนน 442 = ( 509 495 472 bytes = (156 สคริปต์ + เก็บถาวร 316) - 30 โบนัส)

param($s)tar xOf t|%{$l=$_
($s-split'1| '-ne''|%{($l|% s*g(14*('A234567890JQKRB'|% i*f $_[0]))15)-replace'X','♣♦♥♠'[('CDHS'|% i*f $_[1])]})-join' '}

ลองออนไลน์!

คลี่:

# # the tar archive t should be in default folder
param($s)
tar xOf t|%{ $line=$_
    ($s-split'1| '-ne''|%{
        $pos = 14*('A234567890JQKRB'|% indexOf $_[0])
        $x=$line|% SubString $pos 15

        $suit = 'CDHS'|% indexOf $_[1]
        $x-replace'X','♣♦♥♠'[$suit]
    })-join' '                                          # implicit output
}

สคริปต์ Powershell เพื่อสร้างไฟล์เก็บถาวร tar t(ดู TIO):

(
' ------------- ------------- ------------- ------------- ------------- ------------- ------------- ------------- ------------- ------------- ------------- ------------- ------------- ------------- ------------- ',
'|AX           |2X           |3X           |4X           |5X           |6X           |7X           |8X           |9X           |10X          |JX           |QX           |KX           |J            |* * * * * * *|',
'|   -------   |   -------   |   -------   |   -------   |   -------   |   -------   |   -------   |   -------   |   -------   |   -------   |   -------   |   -------   |   -------   |O  -------   | * * * * * * |',
'|  |       |  |  |       |  |  |       |  |  |X     X|  |  |X     X|  |  |X     X|  |  |X     X|  |  |X     X|  |  |X     X|  |  |X     X|  |  |X      |  |  |X      |  |  |X      |  |K |       |  |* * * * * * *|',
'|  |       |  |  |   X   |  |  |   X   |  |  |       |  |  |       |  |  |       |  |  |   X   |  |  |   X   |  |  |       |  |  |   X   |  |  |       |  |  |       |  |  |       |  |E | J     |  | * * * * * * |',
'|  |       |  |  |       |  |  |       |  |  |       |  |  |       |  |  |       |  |  |       |  |  |       |  |  |X     X|  |  |X     X|  |  |       |  |  |       |  |  |       |  |R |  O    |  |* * * * * * *|',
'|  |   X   |  |  |       |  |  |   X   |  |  |       |  |  |   X   |  |  |X     X|  |  |X     X|  |  |X     X|  |  |   X   |  |  |       |  |  |   J   |  |  |   Q   |  |  |   K   |  |  |   K   |  | * * * * * * |',
'|  |       |  |  |       |  |  |       |  |  |       |  |  |       |  |  |       |  |  |       |  |  |       |  |  |X     X|  |  |X     X|  |  |       |  |  |       |  |  |       |  |  |    E  | J|* * * * * * *|',
'|  |       |  |  |   X   |  |  |   X   |  |  |       |  |  |       |  |  |       |  |  |       |  |  |   X   |  |  |       |  |  |   X   |  |  |       |  |  |       |  |  |       |  |  |     R | O| * * * * * * |',
'|  |       |  |  |       |  |  |       |  |  |X     X|  |  |X     X|  |  |X     X|  |  |X     X|  |  |X     X|  |  |X     X|  |  |X     X|  |  |      X|  |  |      X|  |  |      X|  |  |       | K|* * * * * * *|',
'|   -------   |   -------   |   -------   |   -------   |   -------   |   -------   |   -------   |   -------   |   -------   |   -------   |   -------   |   -------   |   -------   |   -------  E| * * * * * * |',
'|           XA|           X2|           X3|           X4|           X5|           X6|           X7|           X8|           X9|          X10|           XJ|           XQ|           XK|            R|* * * * * * *|',
' ------------- ------------- ------------- ------------- ------------- ------------- ------------- ------------- ------------- ------------- ------------- ------------- ------------- ------------- ------------- '
) | Set-Content f -Force
tar zcf t f -o
Get-ChildItem t # output info about archive size
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.