เขียนโปรแกรมที่ใช้สัญลักษณ์ ASCII ที่ไม่ใช่ตัวอักษรและตัวเลขที่พิมพ์ได้ทั้งหมด


17

โดยเฉพาะให้ใช้สัญลักษณ์เหล่านี้อย่างน้อยหนึ่งครั้งในซอร์สโค้ดของคุณ:

! " # $ % & ' () * + , - .  / : ; < = > ? @ [ \ ] ^ _ ` { | } ~

สัญลักษณ์ภายในความคิดเห็นสตริงตัวอักษร regexps (หรือตัวอักษรชนิดอื่น ๆ ฯลฯ ) จะไม่ถูกนับ (แต่ตัวคั่นเช่น/**/หรือ""จะนับ)

โปรแกรมไม่ควรดำเนินการใด ๆ มันต้องรวบรวมและไม่ทำอะไรเลยเมื่อทำงาน

หากด้วยเหตุผลบางอย่างสัญลักษณ์บางอย่างไม่สามารถใช้ในภาษาที่คุณเลือกได้ให้อธิบายว่าอย่างจริงจัง (จะต้องยกเว้นอะไรและเพราะเหตุใด)

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

อัปเดต:รหัสที่สั้นที่สุดชนะ (ติดแท็กเป็นรหัส - กอล์ฟ ) ตามที่แนะนำเราจะต้องมีเกณฑ์ tie-breaker บ้าง ฉันขอแนะนำว่าหากมีการเสมอกันผู้ชนะคือหนึ่งในสัญลักษณ์ ASCII ที่ปรากฏขึ้นเรียงลำดับให้มากที่สุด อย่างเป็นทางการ: กรองการเกิดขึ้นครั้งแรกของแต่ละสัญลักษณ์ที่ระบุในรายการจากโปรแกรม ซึ่งจะส่งผลให้เกิดการเปลี่ยนแปลงในสัญลักษณ์ที่ระบุไว้ โปรแกรมที่มีจำนวนการผกผันน้อยลงของการเปลี่ยนแปลงของการชนะ

อัปเดต:ฉันยินดีที่จะเห็นโซลูชันเพิ่มเติม / มากกว่าในภาษาปกติ / หลักเช่น C (++), Java, Scala, Haskell ฯลฯ


1
เราสามารถมีข้อยกเว้นตามตัวอักษรสำหรับตัวอักษรที่ไม่ปรากฏในคำหลักไวยากรณ์หรือโอเปอเรเตอร์ในภาษาใดภาษาหนึ่งได้หรือไม่? นั่นไม่ใช่ทั้ง@%backtick สามารถปรากฏใน c ยกเว้นว่าเป็นส่วนหนึ่งของตัวอักษร (ใน c รุ่นใหม่ที่เพียงพอ%สามารถปรากฏใน digraphs) (และ#จะปรากฏในคำสั่งพรีโปรเซสเซอร์เท่านั้น แต่เราจะต้องใช้ชีวิตกับสิ่งนั้น)? นั่นคือฉันขอให้แนวทางของแมตต์ถูกกฎหมายอย่างชัดเจน
dmckee

2
รหัสสั้นที่สุดชนะ? ฉันสงสัยว่าจะต้องมีเกณฑ์การเข้าร่วมด้วยเช่นกัน
ardnew

1
ใน Javascript, ตัวละคร#, @และ `อยู่นอกไม่ได้ตามกฎหมายของการจัดเรียงใด ๆ ของตัวอักษร
ปีเตอร์โอลสัน

6
นี่เป็นการแข่งขันของ "ค้นหาภาษาที่สามารถใช้อักขระเหล่านี้ทั้งหมดเป็นไวยากรณ์" ทองรหัสเส็งเคร็งสวยในความคิดของฉัน
Earlz

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

คำตอบ:


18

Brainf * ck, 32 ตัวอักษร

!"#$%&'()*+.-/:;>=<?@[\]^_`{|}~,

พิมพ์หน้ายิ้ม (หากคอนโซลของคุณสามารถส่งออกสัญลักษณ์ ASCII 1)

Yay โซลูชั่น Branf * ck ที่เต้น Golfscript! : P

หากคุณยืนยันว่าไม่มีเอาต์พุตเพียงแลกเปลี่ยน+และ.:

!"#$%&'()*.+-/:;>=<?@[\]^_`{|}~,

6
หืมมม ... ผมอยากจะบอกว่ามันไม่ซ่อนตัวละครในการแสดงความคิดเห็น แต่แหมดี
หยุดที่จะเปลี่ยนรหัสผ่านเมื่อ

5
@leftaroundabout: พวกเขาไม่ใช่ความคิดเห็นทางเทคนิคเพราะคุณไม่สามารถใช้พวกเขาเพื่อแสดงความคิดเห็นคำแนะนำที่ถูกต้อง พวกเขาถูกจัดการเป็นช่องว่าง โดยวิธีการที่ฉันเห็นด้วยกับคุณว่านี่เป็นกฎที่ยืดออกไร้ยางอาย
vsz

3
@ vsz ไม่มีอะไรผิดปกติกับการดัดกฎ
Gareth

1
หมายเลขผกผันของโซลูชันนี้คือ 24 ดังนั้นจึงเป็นผู้ชนะตามกฎ ฉันมีข้อสงสัยบางอย่างเกี่ยวกับเรื่องนี้เนื่องจากตัวละครที่ไม่สนใจนั้นใกล้เคียงกับความคิดเห็น แต่ฉันบอกว่ามันแย่มากฉันไม่ได้คิดถึงความเป็นไปได้นี้เมื่อเขียนคำถาม
Petr Pudlák

1
@BodoThiesen อันที่จริงค่อนข้างเก่าฉันเดาว่าอาจมีคุณสมบัติสำหรับการแก้ปัญหาที่ชนะแม้ว่าอันนี้จะดีกว่าแม้ว่ามันจะเหยียดกฎเล็กน้อย
Petr Pudlák

47

Perl, 32 ตัวอักษร

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

$`<@"^[(\{_},)]/+-~%'?&|:!*.=>;#

ลักษณะ

ฉันได้พยายามระบุโอเปอเรเตอร์ที่มีการเยื้อง: นิพจน์ที่ถูกต้องที่สุดจะถูกประเมินก่อนที่จะไปทางซ้าย

        $`            # scalar variable $ named `
      <               # numeric less-than inequality <
        @"            # array variable @ named "
                      #   (array evaluated in scalar context)
    ^                 # bitwise XOR ^
        [(\{_},)]     # array reference [] 
                      #   containing array () 
                      #     containing reference \
                      #       to anonymous hash reference {}
                      #         with one key "_" 
                      #           and no value (nothing following comma ,)
                      #             (reference evaluated in scalar context)
      /               # numeric division /
        +-~%'         # unary addition +
                      #   and unary negation -
                      #     and bitwise complement ~
                      #       on hash variable % named '
                      #         (hash evaluated in scalar context)
  ?                   # ternary conditional operator ?:
    &|                # code reference variable & named |
  :                   # ternary conditional operator ?:
    ! *.              # logical negation !
                      #   on typeglob variable * named .
                      #     (typeglob evaluated in scalar context)
  =>                  # fat comma => for compound expression
                      #   (evaluates LHS as string, RHS is empty)
;                     # end of expression ;
#                     # start of comment #

ถูกต้องฉันถ้าฉันผิด แต่คุณเพียงแค่ทำให้สเกลาร์เรียกว่า`<@"^[(\{_},)]/+-~%'?&|:!*.=>?
นาย Llama

2
@GigaWatt ไม่นี่เป็นลำดับของนิพจน์ต่างๆ ฉันจะเพิ่มคำอธิบายว่ามันถูกประเมินอย่างไร
ardnew

@GigaWatt: ไม่; ใน Perl ตัวระบุสัญลักษณ์เป็นอักขระเดี่ยวทั้งหมด ของการจัดเรียงของสิ่งที่ผมคิดว่าโปรแกรมนี้ใช้เพียง$`, @", %'และ*.(กสเกลาอาร์เรย์กัญชาและ typeglob ตามลำดับ) แม้ว่ามันจะเป็นเรื่องยากชะมัดเพื่อให้แน่ใจว่า . .
ruakh

23
ไม่ว่าคุณจะเป็นอัจฉริยะหรือลำดับไบต์สุ่มใด ๆ เป็นโปรแกรม Perl ที่ถูกต้อง หรือทั้งคู่.
ugoren

4
แม้ว่าตามกฎของฉันเองฉันต้องให้รางวัลกับโซลูชัน Brainfuck แต่อันนี้เป็นรายการโปรดของฉัน (ขนาดเดียวกัน แต่กลับกันหมายเลข 279)
Petr Pudlák

9

ช่องว่าง, 32

!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~

อักขระที่ไม่ใช่ช่องว่างทั้งหมดจะถูกละเว้นดังนั้นนี่จึงเป็นโปรแกรมที่ว่างเปล่า


3
เราสามารถโต้แย้งได้ว่าตัวละครที่ไม่ใช่ช่องว่างทั้งหมดเป็นความคิดเห็นและนี่ไม่ถูกต้อง :)
NRGdallas

8

Python 65

a=lambda x:0.
@a#
def _():{[`'"$?'`,]};a<a!=a+a%a&a^a-a*a|~a>a/a\

ฉันใช้ตัวละคร?และ$ภายในตัวอักษรสตริง อักขระเหล่านี้ไม่ถูกกฎหมายนอกตัวอักษรหรือความคิดเห็นสตริง


สิ่งนี้มีไวยากรณ์ที่ไม่ถูกต้อง โดยเฉพาะ{[`'"$?'`,]}ไม่ถูกต้องเนื่องจากจะสร้างพจนานุกรมที่มีคีย์ซึ่งไม่มีค่าที่เกี่ยวข้อง คุณสามารถใช้งานได้กับอักขระอีกสองตัวดังนี้:{[`'"$?'`,]:0}
Strigoides

1
@ Strigoides ไม่มันทำให้ชุดไม่ใช่ dict แต่แม้ว่าจะเป็นกรณี (คีย์ dict โดยไม่มีค่า) มันทำงานซึ่งเป็นข้อกำหนดไม่ใช่ไวยากรณ์ที่ถูกต้อง (คุณต้องใช้ python> = 2.7 เพื่อให้สามารถใช้งานได้)
Matt

ฉันเห็นว่าฉันใช้ python 2.6 เมื่อฉันทดสอบ
Strigoides

8

PHP, 32 ตัวอักษร

น่าจะเป็นบิตของการหมุนรอบโปรแกรม PHP นี้ยังเป็น QUINEและใช้สัญลักษณ์ทั้งหมดตามลำดับที่ปรากฏ

!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~

ดำเนินการจากบรรทัดคำสั่งเอาต์พุตจะเป็นเนื้อหาของไฟล์เนื่องจากไม่มี<?phpการเรียกตัวแปลภาษา

$ cat > a.php
!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~

$ php a.php
!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~

4
IMHO สิ่งนี้ละเมิดสัญลักษณ์ภายในความคิดเห็นตัวอักษรสตริง, regexps (หรือตัวอักษรชนิดอื่น ๆ ) ไม่นับรวมเนื่องจากโปรแกรมทั้งหมดเป็นตัวอักษรเดียว
Petr Pudlák

นอกจากนี้โปรแกรมที่ต้องการโดยภารกิจไม่ควรเอาท์พุทอะไรเลยและมีเพียงหนึ่งควินิน
Paŭlo Ebermann

มันไม่ได้รับการแยกวิเคราะห์โดย PHP ดังนั้นสิ่งนี้จึงไม่ถูกต้องนัก
Rob

@RobQuist แน่นอนว่ามันได้รับการแยกวิเคราะห์มันกำลังยุ่งอยู่กับการล่าสัตว์ที่โทเค็น T_OPEN_TAG ที่เข้าใจยากถูกต้องจนกว่าจะถึงจุดสิ้นสุดที่มีรสขม
Leigh

7

Perl 6 (43 ตัวอักษร)

ลองกำหนดตัวดำเนินการมัดด้วยชื่อที่ค่อนข้างแปลก:

sub infix:<!"#$%&'()*+,-./:;=?@[]^_´\|~>{}

มันไม่ใช่ตัวอักษรหรือตัวอักษรใน RE หรืออะไรก็ตามที่ซ่อนอยู่ในความคิดเห็น คุณไม่เชื่อฉัน การรันโปรแกรมต่อไปนี้จะส่งออก "2":

sub infix:<!"#$%&'()*+,-./:;=?@[]^_´\|~>($a, $b){ $a + $b }
say 1 !"#$%&'()*+,-./:;=?@[]^_´\|~ 1;

แต่ฉันค่อนข้างแน่ใจว่าคุณนักไนติงเกอร์จะขยายกฎต่อไปเพื่อไม่ให้มีการกำหนดคำนิยามใหม่ของภาษาเอง :(


ฉันว่านี่ก็โอเคการใช้สัญลักษณ์ในตัวระบุดูเหมือนสมเหตุสมผล
Petr Pudlák

7

Haskell, 53

a@""#%&*+/?^b|a'<-a!!0=(\_->a`b`[]);main=do{print$1}

เราสามารถทำให้สิ่งนี้สั้นกว่านี้เล็กน้อย

45

a'@""#%&*+/?!<|^b=(\_->1`b`[]);main=do{main}

แต่โปรแกรมนี้ไม่ได้บอกเลิกและใช้ตัวอักษร ( '!', '<', '|') ในมัดใหม่ที่กำหนดไว้


5

k (33 ตัวอักษร)

ง่ายมากใน k น่าเสียดายที่"ต้องจับคู่

(@:'!""#$%&*+-\./;<=>?^_{}[`]|,~)

5

GolfScript (33 ตัวอักษร)

{!""$%&()*+,-./<=>?@[\]^_`|~};:'#

"จะต้องมีการจับคู่ มันต้องใช้การทดลองและข้อผิดพลาดเล็กน้อยเพื่อให้ได้ผลลัพธ์ใด ๆ - ตำแหน่งอื่น ๆ ส่วนใหญ่ของ:'ผลลัพธ์ในเอาต์พุตบางตัว


5

J, 33 ตัวอักษร

''&][?!"$>{}:<;,|^~*/\%+`-@.#(=_)

' ต้องเพิ่มเป็นสองเท่าเพื่อหลีกเลี่ยงข้อผิดพลาดทางไวยากรณ์

คำตอบแรกของฉันไม่มีสัญลักษณ์บางอย่าง


5

C, 48 ตัวอักษร

ชนิดของการโกง

#define _ ~''*+,-./:<=>?[]`|\
@%^$&!
main(){"";}

2
ผลักดันขอบเขตของ "การโกง" อย่างแน่นอนเนื่องจากส่วนใหญ่จะปรากฏในมาโครที่ไม่มีการเรียกใช้ วิธีการเกี่ยวกับ#define Q(_) "##_##"... char*c=Q(~''*+,-./:<=>?[]| \); ` ไม่มีอะไรในสตริงมันเพิ่งถูกแปลงเป็นหนึ่ง ... มันจะนานกว่าแน่นอน
dmckee

@ dmckee ฉันไม่คิดว่าคำแนะนำของคุณจะซื่อสัตย์กว่าของฉัน ในทั้งสองกรณีอักขระที่มีปัญหาไม่ได้อยู่ในโค้ด ฉันสามารถย้ายพวกเขาส่วนใหญ่ไปเป็นรหัสได้ (เหมือนที่เคยทำ"";) แต่$@backtick ดูสิ้นหวัง
ugoren

สงสัยเกี่ยวกับมันไม่มีฉันเป็นยังเหม็นทุจริตและส่อเสียด แต่มันก็สนุกดี
dmckee

@dmckee สนุกเป็นเรื่องเกี่ยวกับ BTW #define Q(_) #_คุณจะต้อง ตัวประมวลผลล่วงหน้าจะถือว่า"##_##"เป็นตัวอักษรสตริง
ugoren

5

Postscript - 32 ตัวอักษร

{!"#$&'()*+,-./:;=<>?@[\]^_`|~}%

ส่งผลให้วัตถุในกองซ้อน แต่อย่างอื่นไม่มีผลกระทบ Postscript อนุญาตให้ตัวอักษรเกือบทุกตัวในตัวระบุยกเว้น<>()[]{}/ซึ่งเป็นรูปแบบไวยากรณ์พิเศษและ%แนะนำความคิดเห็น โปรแกรมถูกโทเค็นเป็น

{                  % start a procedure object
!"#$&'             % an identifier
()                 % an empty string
*+,-.              % an identifier
/:;=               % a symbol
<>                 % an empty hex string
?@                 % an identifier
[\]                % an array
^_`~|              % an identifier
}                  % close the procedure object
%                  % a comment

3

C # (91 ตัวอักษร)

#define a 
class a{static int @Main(){return(char)1.1*""[0]/1%1-1+1!=1?1:~1^1>>1<<1&1+'\0';}}

เท่าที่ฉันทราบอักขระ$ไม่ใช่อักขระที่ถูกต้องนอกตัวอักษรสตริงดังนั้นฉันจึงไม่ได้ใช้มันในคำตอบของฉัน

แก้ไข : ขอบคุณPeter Taylorฉันย่อรหัส


1
#if A... #endifจะสั้นกว่า...#region #endregionและสั้นกว่า"x"[0]+ [System.STAThread]
Peter Taylor

3

PowerShell (52 ตัวอักษร)

$_+=(@(1.1,1)[0]-1)*1/1%'1'::ToInt|&{!"">~\1}<#^#>`;

ฉันต้องใส่อักขระ^เป็นตัวอักษรสตริงเพราะเท่าที่ฉันรู้แล้วอักขระ^ไม่ใช่อักขระ PowerShell ที่ถูกกฎหมายนอกตัวอักษรสตริง ถูกต้องฉันถ้าฉันผิด

วิธีเดียวที่ฉันพบว่าพอดีใน:ตัวละครคือการใช้ตัวดำเนินการ ::เพื่อโทรไปยังวิธีการคงที่


3

Scheme, 41 ตัวอักษร

(define !$%&*+,-./:<=>?@[\]^_`{|}~ "#'");

สิ่งนี้ใช้ประโยชน์จากความทนทานอย่างไม่น่าเชื่อของ Scheme สำหรับตัวละครในชื่อตัวแปร ในโปรแกรมนี้ฉันสร้างตัวแปรด้วยชื่อ! $% & * +, -. /: <=>? @ [] ^ _ `{|} ~ ซึ่ง Scheme ยอมรับอย่างมีความสุข



3

C: 83 56 ตัวอักษร

#undef a
_;main($){$/=-+~!0|0^0%1,1<.0>0?'`':*&"@"[0];}\

สัญญาณ - และ backticks ไม่ได้เป็นส่วนหนึ่งของไวยากรณ์ C ที่อนุญาตดังนั้นฉันได้ใส่ไว้ระหว่างเครื่องหมายคำพูด


1
ทำไมวงเล็บใน(b)? มันเป็นรูปแบบที่แปลกและเป็นตัวของตัวละคร
ugoren

1
หากคุณใช้โครงสร้างสำหรับจุดนั้น0.0จะสั้นกว่ามาก
ugoren

ฉันจะไม่คิดถึงสิ่งนั้น (0.0) ได้อย่างไร? วงเล็บคือส่วนที่เหลือจากตอนที่พวกเขาบันทึกอักขระหนึ่งตัวจริง ๆ แต่ตอนนี้พวกเขาไม่จำเป็นจริง ๆ ขอบคุณ @ugoren!
Fors

ฉันคิดว่าmain(_,$)จะช่วยตัวละคร
ugoren

และด้วย gcc คุณสามารถเขียนx?:yได้ แต่ไม่ใช่มาตรฐาน C.
ugoren

2

เสียงกระเพื่อมสามัญ 33 ตัว

#+()'|!"$%&*,-./:;<=>?@[\]^_`{}~|

ส่วนหลักของการประเมินดังกล่าวข้างต้น (หรือค่อนข้างจะประเมินถ้าไม่ได้#+()อยู่ข้างหน้ามัน) กับสัญลักษณ์ชื่อ:

!#$%&()*+,-./:;<=>?@[\]^_`{}~

#+()คือการหลีกเลี่ยงการส่งออก ฉันไม่แน่ใจว่า|foo|ไวยากรณ์สำหรับสัญลักษณ์นับเป็นตัวอักษร แต่สัญลักษณ์ถูกใช้เป็นชื่อตัวแปร / ฟังก์ชั่นใน Common LISP และมีคำตอบสองสามข้อที่ใช้อักขระที่จำเป็นในสิ่งเหล่านี้


2

Smalltalk (Squeak 4.x dialect) 38ตัวอักษร

ใช้วิธีนี้ใน Object, ไวยากรณ์ที่ถูกต้องหากการตั้งค่าอนุญาตให้ขีดล่าง (ซึ่งเป็นการตั้งค่าเริ่มต้น)

%&*+/<=>?@\!~y""^Z_([:z|{#'',$`;-y}]).

ประกาศ Z เป็น var ส่วนกลางในเมนูป๊อปอัพหากมีการโต้ตอบ

คำอธิบาย:

  • % & * + / <=>? @! ~ เป็นตัวเลือกไบนารี (ตัวดำเนินการ)
  • y คือพารามิเตอร์ (ตัวถูกดำเนินการ)
  • "" เป็นความคิดเห็นที่ว่างเปล่า
  • ^ หมายถึงผลตอบแทน
  • Z เป็นตัวแปรทั่วโลก
  • _ คือการมอบหมาย
  • () คั่นนิพจน์ย่อย
  • [: z |] คั่นขอบเขตของโค้ดด้วยหนึ่งพารามิเตอร์ z
  • {} คั่น Array
  • # '' เป็นสัญลักษณสัญลักษณที่ทำจากสตริงว่าง (องค์ประกอบแรกของ Array)
  • เป็นข้อความไบนารีที่ส่งไปยังสัญลักษณ์ด้านบน
  • $ `เป็นตัวอักษรที่ใช้เป็นอาร์กิวเมนต์ของข้อความด้านบน
  • ; ใช้สำหรับการผูกมัดข้อความที่สองที่ส่งไปยัง Symbol Symbol ตัว # #
  • ข้อความที่สองคือ -
  • y ถูกใช้เป็นอาร์กิวเมนต์ข้อความที่สอง
  • . สำหรับแยกคำสั่งถัดไป (นี่คือช่วงเวลาสุดท้าย)

ประณามใครบอกว่าสมอลล์ทอล์คอ่านได้?

โปรดทราบว่าฉันไม่ได้โกงตัวละครที่ไม่ถูกต้องตัวเดียวเท่านั้นที่จะถูกใส่เข้าไปในตัวอักษรที่แท้จริง แก้ไขดูด้านล่างนี่เป็นการยืนยันที่ผิดพลาด (อย่างน้อยใน Squeak)


แต่เราสามารถลดจำนวนลงได้ถึง34ตัวอักษรด้วยเทคนิคนี้

%&*+,-/<=>?@\!~|y""^[{#(:_;`$')}].

เวลานี้:

  • # () คั่น Array ที่แท้จริง
  • ซึ่งมีสัญลักษณ์ 4 ตัวอักษร: _; `และ 1 ตัวอักษร $ '

พูดอย่างเคร่งครัดเราสามารถพิจารณาสิ่งนี้ว่าเป็นการโกง ... มันไม่ได้เป็นตัวอักษรสตริง แต่มันก็ยังไม่ใช่ตัวอักษรที่ว่างเปล่า ...

ฉันยังต้องแสดงความคิดเห็นเป็นสองเท่า "" (เว้นแต่ฉันจะสร้างตัวอักษรตามตัวอักษรด้วย $ "แต่จากนั้นฉันต้องเพิ่มข้อความเป็นสองเท่า '')
ฉันยังต้องใช้ตัวอักษรสำหรับพารามิเตอร์ (_ ไม่เป็นที่ยอมรับแม้ว่า เราตั้งค่ากำหนดอนุญาตให้ขีดล่างในตัวเลือกเป็นจริง)

สิ่งที่ดีคือเราสามารถเรียกใช้เมธอดได้เช่นส่งข้อความถึง 1 โดยมีอาร์กิวเมนต์ 2:

1%&*+,-/<=>?@\!~|2

แก้ไขในที่สุดใน35ตัวอักษรโดยไม่ต้องโกง

!%&*+,-/<=>?@`y""^[:x_|#()~$';\{}].

หมายเหตุ:

  • การตั้งค่าอนุญาตให้ขีดล่างในตัวเลือกเปิดใช้งานโดยใช้พารามิเตอร์บล็อกชื่อ x_
  • `เป็นตัวละครที่ถูกต้องสำหรับตัวเลือกไบนารีที่ขัดแย้งกับสิ่งที่ฉันพูด
  • ฉันยังใช้ $ 'เพื่อหลีกเลี่ยงการเพิ่มคำพูด

1

R: 108 ตัวอักษร

a=new(setClass("a",representation(b="list")));a@b=list(c_d=1:2);if(1!='\t'&.1%*%1^1>a@b$c[1]/1|F){`~`<-`?`}#

เห็นได้ชัดว่าการส่งที่ยาวที่สุด แต่เพื่อให้สามารถใช้สัญลักษณ์@และ$ใน R เราจำเป็นต้องสร้างวัตถุที่มีช่อง (ทำดัชนีโดยใช้@) และองค์ประกอบที่มีชื่อ (ใช้ดัชนี$)
ทางออกที่สั้นที่สุดที่ฉันคิดได้คือการสร้างคลาสใหม่ของวัตถุ ( a=new(setClass("a",representation(b="list")))) ซึ่งต้องเสียค่าใช้จ่าย คำอธิบายมิฉะนั้น Appart จากคลาสสิกที่ไม่จำเป็น (เช่น!=, #หรือ1:2)

`~`<-`?` 

สร้างโอเปอเรเตอร์ใหม่ที่ทำหน้าที่เหมือนกับโอเปอเรเตอร์?(เช่นเรียกหน้าช่วยเหลือขององค์ประกอบที่นำหน้า)

%*%คำนวณผลิตภัณฑ์ภายในของเมทริกซ์สองตัว (ที่นี่1^1และ.1)
สัญลักษณ์_ไม่ได้ทำอะไร (AFAIK) ใน R แต่ใช้เป็นประจำในชื่อตัวแปรหรือฟังก์ชั่นตามปกติในกรณีนี้


1

TI-Basic, 36

:End:#$%&'()*+.-/;>=<?@[\]^_`{|}~,!"

สิ่งนี้ไม่ถูกต้องเพราะมักจะใช้คำพูดเริ่มต้นสำหรับความคิดเห็น
Tyzoid

@Tyzoid ฉันย้ายมันไปจนจบ
Timtech

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