ตัวอักษร A ไม่มี A


69

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

ทั้งตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ของตัวอักษร "A" เป็นที่ยอมรับได้ (นั่นคือ unicode U + 0061หรือ unicode U + 0041 การเข้ารหัสอักขระอื่น ๆ ที่ไม่ใช่ Unicode นั้นจะต้องได้รับอนุญาต เป็นตัวอักษรละติน "A" และไม่มีลักษณะคล้ายกันใด ๆ หรือ homoglyphs)

คุณต้องไม่ใช้อักขระใด ๆ ด้านล่างในรหัสของคุณโดยไม่คำนึงถึงการเข้ารหัสอักขระที่คุณเลือก:

  • " A " ไม่ว่าจะเป็นตัวพิมพ์ใหญ่หรือตัวพิมพ์เล็ก

  • " U " ไม่ว่าจะเป็นตัวพิมพ์เล็กหรือใหญ่

  • Xไม่ว่าจะเป็นตัวพิมพ์ใหญ่หรือตัวพิมพ์เล็ก

  • +

  • &

  • #

  • 0

  • 1

  • 4

  • 5

  • 6

  • 7

  • 9

ไม่อนุญาตให้มีการโกงช่องโหว่ ฯลฯ

เนื่องจากนี่คือทางออกที่สั้นที่สุดในหน่วยไบต์ซึ่งตามกฎทั้งหมดจึงเป็นผู้ชนะ


เครื่องมือตรวจสอบความถูกต้อง

กองตัวอย่างนี้ตรวจสอบเพื่อให้แน่ใจว่ารหัสของคุณไม่ได้ใช้อักขระที่ถูก จำกัด อาจไม่ทำงานอย่างถูกต้องสำหรับการเข้ารหัสอักขระบางตัว

var t = prompt("Input your code.");

if (/[AaUuXx+&#0145679]/.test(t)) {
  alert("Contains a disallowed character!");
} else {
  alert("No disallowed characters");
}

นี้กองโค้ดที่ทำให้แน่ใจว่าคุณไม่ได้มีตัวละครที่ไม่ได้รับอนุญาตก็ยังมีอยู่JSFiddle

ลีดเดอร์บอร์ด


7
@ColdGolf คุณดูเหมือนจะพูดว่า "ใช่" กับฟังก์ชั่น แต่ฟังก์ชั่นไม่แสดงพวกเขามักจะกลับมา
xnor

2
การจบลงด้วยตัวแปรที่มีเพียงaดีพอหรือไม่?
Ton Hospel

1
นั่นไม่ใช่สิ่งที่ฉันหมายถึง รหัสที่ควรทำในการกำหนดตัวแปรจะไม่มีตัวอักษรต้องห้ามใด ๆ ฉันแค่พยายามที่จะเข้าใจสิ่งที่ถูกปกคลุมด้วย "แสดงโดยวิธีการอื่นนอกเหนือจากการพิมพ์" ถ้า "return จากฟังก์ชั่น" เป็น OK แล้วอะไรคือ "มอบหมายให้กับตัวแปร"?
Ton Hospel

1
ทำไมต้องเป็นตัวละครเหล่านั้น
user253751

7
@ กลไกAสำหรับเหตุผลที่ชัดเจน Uสำหรับ Unicode escape strings ( \u0041คือA), Xสำหรับ hex escape strings ( \x41), +สำหรับ Unicode ordinals ( U+0041), &สำหรับเอนทิตี HTML, ที่#จริงฉันไม่รู้, 65เป็นทศนิยมลำดับของA, 41เป็นเลขฐานสิบหกของA, 97เป็นเลขฐานสิบของaและ0ด้วยเหตุผลบางประการก่อนหน้านี้
Mego

คำตอบ:


86

Pluso 1 ไบต์

o

Pluso Esolangs หน้า

Pluso มีตัวสะสมเดี่ยวที่เริ่มต้นด้วยค่า 1 มันใช้สองคำสั่งpซึ่งจะเพิ่มการสะสม (mod 27) และoซึ่งพิมพ์ค่าปัจจุบันเป็นตัวอักษร ASCII ตัวพิมพ์ใหญ่ AZ หรือช่องว่าง (ที่ 1-26 หมายถึง AZ ตามลำดับและ 0 หมายถึงช่องว่าง)

ในฐานะที่สะสมเริ่มต้นที่ 1 คำสั่งoไม่มีก่อนหน้าออกจะ


14
ยินดีต้อนรับสู่ PPCG! ฉันขอแนะนำให้ใส่คำอธิบายลงในคำตอบของคุณในกรณีที่ลิงก์เสียด้วยเหตุผลใดก็ตาม
TheBikingViking

เพิ่มคำอธิบายแล้ว รอการอนุมัติจากโมเดอเรเตอร์
KPM

2
ขอบคุณสำหรับคำแนะนำ (และยินดีต้อนรับ) ฉันได้อัปเดตคำตอบของฉันเพื่อรวมคำอธิบายสั้น ๆ
cdw

ฉันเพิ่ง upvoted ที่จะทำให้คุณที่ 666 ตัวแทน ขอโทษสำหรับเรื่องนั้น.
Aidan F. Pierce

5
สิ่งนี้ไม่ได้ล้มเหลวในการทดสอบ "is esolang" หรือไม่เพราะไม่สามารถทำการตรวจสอบขั้นต้นได้
Magic Octopus Urn

155

Python 2, 14 ไบต์

print`3<3`[~3]

การแสดงออก3<3ให้บูลีนFalseและ backticks 'False'ให้เป็นตัวแทนสตริง aจากที่นี่ก็ยังคงที่จะดึงตัวอักษร Python ได้รับการจัดทำดัชนี 0 ดังนั้นจึงaอยู่ที่ดัชนี1ซึ่งเป็นอักขระต้องห้าม สามารถแสดงเป็น3-2แต่มีวิธีที่สั้นกว่า Python อนุญาตการสร้างดัชนีจากด้านหลังโดยมีดัชนี-1สำหรับรายการสุดท้าย -2สำหรับรายการก่อนหน้าและอื่น ๆ เราต้องการดัชนี-4แต่4ก็เป็นหมายเลขต้องห้ามด้วย แต่เราสามารถแสดงมันออกมาเป็น~3ใช้บิตสมบูรณ์~ซึ่งจะช่วยให้สำหรับ-n-1~n


7
นั่นเป็นทางออกที่ยอดเยี่ยมจริงๆ นอกจากนี้คุณไม่สามารถทำ[2]แทน[~3]?
DJMcMayhem

6
@DJMcMayhem มันเป็น 0 [1]การจัดทำดัชนีโชคร้ายก็จะต้อง
xnor

4
... ทำไมเป็น1และ4ห้าม 'หมายเลข'
Chris Cirefice

4
กฎของความท้าทายพูดอย่างนั้น
xnor

20
ตอนนี้ฉันกำลังพิจารณาใช้ "~ 0" กำลังอ่านว่า "องค์ประกอบแรกที่ทำดัชนีเป็นศูนย์จากด้านหลัง" ผมสงสัยว่าทำไมเราจะใช้ "-1" สัญกรณ์ในหลาม ....
PascalVKooten


48

PHP, 9 6 ไบต์

<?=O^_^Q;

9 ไบต์: แรงบันดาลใจจากคำตอบของ @Ton Hospel นอกจากนี้ยังมีประโยชน์เพิ่มเติมในการค้นหาเช่น Kaomoji :-)

รุ่นปรับปรุง 6 ไบต์:

<?=~¾;

ประเด็น¾มีรหัสฐานสิบหกของ 0xBE (มันเป็นสิ่งสำคัญที่จะบันทึกไฟล์ในละติน-1 การเข้ารหัส , ไม่ UTF-8)


f^E^bรุ่นทางเลือกคือ
Ismael Miguel

ใช่โซลูชั่น 9 ไบต์มีอยู่มากมาย ฉันเริ่มต้นด้วย y ^ '8' และ x ^ '9' โชคไม่ดีที่ตัวเลขจะต้องถูกส่งไปยังสตริงมิฉะนั้น XOR จะเป็นประเภทผลลัพธ์ที่ได้จะเป็นจำนวนเต็ม
YetiCGN

23
+1 สำหรับใบหน้า^_^
Cyoce

รุ่น 6 Byte Aไม่พิมพ์ =Aมันพิมพ์
UTF-8

1
ฉันรู้ว่าคำตอบของปริศนานี้ขณะนี้: UTF-8 "ส่วนสามในสี่" จุดโค้ดจะถูกเข้ารหัสเป็นไบต์ที่สอง: 0xC2 0xBE , 0xBE เป็นเช่นเดียวกับในมาตรฐาน ISO-8859-1 ผมสังเกตเห็นว่าเมื่อฉันบันทึกนี้ไปยังแฟ้มบนกล่องลินุกซ์ของเราซึ่งเราสามารถเข้าถึงได้ผ่านทาง SSH กับ UTF-8 แน่นอนว่าไฟล์เป็น7 ไบต์ ดังนั้นบันทึกสคริปต์ด้วยการเข้ารหัสละติน -1 และจะเป็น 6 ไบต์และไม่ส่งออก=อักขระ
YetiCGN


32

brainfuck, 16 ไบต์

-[-[---<]>>-]<-.

นี้จะขึ้นอยู่กับขั้นตอนวิธีการ brainfuck Esolang สำหรับ 159

ลองออนไลน์!


3
นี่ .... เป็นเวทย์มนตร์
Conor O'Brien

3
วิธีแก้ปัญหานี้ใช้เซลล์ที่ดัชนี -1 ซึ่งไม่ได้รับการสนับสนุนในล่ามสมองทั้งหมดและจะทำให้เกิดความผิดพลาด คุณสามารถเรียกใช้ที่นี่เพื่อดูfatiherikli.github.io/brainfuck-visualizer/…
Cody

37
@Cody บน PPCG ภาษาถูกกำหนดโดยการใช้งาน ตราบใดที่มีล่ามหนึ่งตัวที่ทำงานได้ตามที่ต้องการมันเป็นคำตอบที่ถูกต้อง
เดนนิส

3
มันยากแค่ไหนที่คุณจะหลีกเลี่ยงตัวละครต้องห้าม?
Hagen von Eitzen

1
@HagenvonEitzen ฉันต้องขุดเล็กน้อยเพื่อค้นหาอัลกอริทึมที่สามารถหลีกเลี่ยง+ได้ (ทางที่สั้นที่สุดในการพิมพ์จะ) แต่ต้องขอบคุณรายการของค่าคงที่ใน Esolang ไม่ยากเกินไป >+[+[<]>>+<+]>.
เดนนิส

30

JavaScript (ES6), 17 16 14 ไบต์

บันทึกสองไบต์ด้วย Neil!

_=>` ${-_}`[2]

ผลตอบแทนที่เป็นตัวละครที่สองของซึ่งเป็นNaNa

นี่คือเวลาที่สั้นที่สุดที่ฉันสามารถขึ้นมาสำหรับA, 43 42 ไบต์:

_=>`${[][`constr${`${!_}`[2]}ctor`]}`[-~8]

ใครบอกว่าการเป็นนัก obfuscator ไม่ได้ช่วยเรื่อง Code Golf? ไม่ใช่ฉัน!

คำอธิบาย

คนแรกในเชิงลึก

_=>` ${-_}`[2]

-_คือ NaN เนื่องจาก_ไม่ได้กำหนดไว้ ในการรับสิ่งนี้เป็นสตริงหนึ่งจะต้องมีหนึ่งในสิ่งต่อไปนี้:

-_+""
`${-_}`
(-_).toString()

+สุดท้ายเป็นเวลานานเกินไปและการใช้งานครั้งแรก ดังนั้นเราจึงใช้อันที่สอง ตอนนี้เป็นที่ดัชนีa 1สิ่งนี้ไม่ดีเลยเพราะ1ถูกห้าม อย่างไรก็ตามเป็นสตริงแม่แบบที่เราสามารถใส่ช่องว่างในการมีที่จะทำให้มันที่ดัชนีจึงออกจากเราด้วย2` ${-_}`


คนที่สองในเชิงลึก

_=>`${[][`constr${`${!_}`[2]}ctor`]}`[-~8]

อันนี้เป็น doozy

_=>`                                `[-~8]

นี่คืออักขระที่ 9 ของสตริงแม่แบบด้านในซึ่ง-~8มีค่าเท่ากับ 9 ในกรณีนี้สตริงแม่แบบนี้มีไว้สำหรับการสร้างสตริงเท่านั้น นี่คือสมการภายในที่ถูกทำให้เป็นสตริงในระหว่าง${...}:

[][`constr${`${!_}`[2]}ctor`]

ลองขยายนี่สักหน่อย:

(new Array())[`constr${`${!_}`[2]}ctor`]

สิ่งนี้ได้รับคุณสมบัติจากอาร์เรย์ที่ว่างเปล่า แน่นอนคุณสมบัตินี้เป็นสตริงเท็มเพลต แต่มีข้อความอยู่รอบตัว มันเทียบเท่ากับ:`constr${${!""}[2]}ctor`

"constr" + `${!_}`[2] + "ctor"

ด้านในมีค่าเท่ากับ:

(!_).toString()[2]

!_เป็นtrue(เพราะ_เป็นundefinedและ!undefined === true) และ stringified "true"ถูก เราได้รับตัวละครที่สองของมันu; เราต้องใช้วิธีนี้เพื่อหลีกเลี่ยงการใส่uรหัสของเราไว้อย่างชัดเจน

ดังนั้นบิตภายในนี้จึงเท่ากับ:

"constr" + "u" + "ctor" === "constructor"

ดังนั้นเราจะได้รับตัวสร้างของอาเรย์Arrayฟังก์ชั่น Aฉันไม่สามารถใส่นี้ลงอย่างชัดเจนเพราะมันมีสิ่งต้องห้าม ตอนนี้การArrayทำให้ฟังก์ชั่นstringing ให้ผลตอบแทนที่"function Array() { [native code] }"ดี

กลับไปที่รหัสเดิม:

_=>`${[][`constr${`${!_}`[2]}ctor`]}`[-~8]

นี่เทียบเท่ากับที่เราได้เห็น:

_=>Array.toString()[-~8]

เทียบเท่ากับ:

_=>Array.toString()[9]

ในที่สุดเทียบเท่ากับ:

_=>"A"

1
@ ColdGolf ไม่เป็นไร
Conor O'Brien

2
มันจะขัดกับหลักการของ obfuscator หรือไม่ในการเพิ่มคำอธิบาย ... ฉันอยากรู้ว่ามันทำงานอย่างไร
trichoplax

2
@trichoplax ฉันคิดว่ามันจะไม่เจ็บที่จะเปิดเผยวิธีการของฉันที่นี่;) ฉันเพิ่มคำอธิบายสำหรับทั้งสอง
Conor O'Brien

1
@ OldBunny2800 ฉบับที่เป็นตัวละครที่ต้องห้ามและอยู่ในa toUpperCase
Conor O'Brien

3
ฉันคิดว่านี่เป็น Perl ในตอนแรก
Augurous

29

Hexagony , 4 ไบต์

Ayyy lmao? ค่อนข้างกอล์ฟสำหรับภาษาที่ไม่ใช่กอล์ฟฮ่าฮ่า รหัส:

B(;@

ลองออนไลน์!

แบบฟอร์มที่อ่านง่ายขึ้น:

 B (
; @ .
 . .

สิ่งนี้ทำให้ค่า ASCII ของตัวอักษรBซึ่งเป็น 66 บนขอบหน่วยความจำปัจจุบัน มัน substracts มันโดยหนึ่งในการใช้และพิมพ์ด้วย( หลังจากนั้นโปรแกรมจะยกเลิกการใช้;@

รูปภาพเส้นทางที่บังคับใช้:

ป้อนคำอธิบายรูปภาพที่นี่


8
"อ่านง่ายขึ้น" + hexagony = ???
ไม่ใช่ชาร์ลส์ที่

18

เยลลี่ 3 ไบต์

ØWḢ

ลองออนไลน์!

มันทำงานอย่างไร

ØWḢ  Main link. No arguments.

ØW   Yield "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_".
  Ḣ  Head; extract the first character.

เยลลี่ขนาด 4 ไบต์

l-ṾṂ

ลองออนไลน์!

มันทำงานอย่างไร

l-ṾṂ  Main link. No arguments.

l-    Take the logarithm of 0 with base -1. Yields (nan+infj).
  Ṿ   Uneval; yield the string representation, i.e., "nanıinf".
   Ṃ  Take the minimum, returning 'a'.

1
น่าเสียดายที่แนวทางที่สองนั้นยาวกว่านี้ ._
เดนนิส

6
ขอบคุณที่รวมวิธีการที่สอง มันสวยงาม
trichoplax

18

จริงแล้ว 2 ไบต์

úF

ลองออนไลน์!

คำอธิบาย:

úF
ú   lowercase English alphabet
 F  first element

คุณเป็นผู้เขียนหรือไม่ ฉันไม่เคยเห็นภาษานี้มาก่อน
loa_in_

ฉันเคยเห็นมันปรากฏขึ้นสองสามครั้งในความท้าทายในขณะนี้ ฉันคิดว่ามันมีชื่อที่ฉลาดที่สุดของภาษากอล์ฟใด ๆ ในเว็บไซต์ :-) ฉันได้ดูชุดสูทเมื่อเร็ว ๆ นี้และฉันคิดว่ามันเป็นฮาร์วีย์มาก
corsiKa


12

Bubblegum , 1 ไบต์

"

หรือ

B

ดูเหมือนว่าทุกคนจะลืมมันไปแล้ว ...


ไม่เคยใช้ Bubblegum มาก่อนดังนั้นอาจเป็นข้ออ้างที่ไม่รู้ของฉัน แต่ฉันจะหาเอกสารสำหรับ Bubblegum ได้ที่ไหน นอกจากนี้ฉันลองbubblegum.tryitonline.netพร้อมคำตอบของคุณทั้งคู่ แต่ดูเหมือนจะไม่แสดงผลอะไรเลย
Kevin Cruijssen

1
@KevinCruijssen Doc: esolangs.org/wiki/Bubblegum TIO ดูเหมือนจะยอมรับเพียงเลขฐานสิบหกของซอร์สโค้ดดังนั้นลองทำแบบนี้: bubblegum.tryitonline.net/
jimmy23013

นั่นคือปัญหาของฉัน ไม่ได้ใช้ hexdump ขอบคุณและ +1 ที่สั้นที่สุดด้วยคำตอบแบบไบต์เดียว (ผูกด้วย Pluso)
Kevin Cruijssen

@KevinCruijssen มี 1 คำตอบ Pluso Pluso มันมีปัญหาบางอย่างกับกฎเว็บไซต์แปลก ๆ
jimmy23013

10

Perl, 9 8 ไบต์

xor ยังคงได้รับอนุญาต แต่sayไม่ใช่ ดังนั้นสำหรับ 9 ไบต์:

print$/^K

อย่างไรก็ตามการใช้เอาต์พุตไปยัง STDERR ให้ 8 ไบต์:

die~"\x9e\xf5"

แทนที่\x9eและ\xf5ตามเวอร์ชันตัวอักษร หรือสร้างไฟล์เรียกทำงานโดยใช้:

perl -e 'printf q(die~"%s"),~"a\n"' > a.pl

@ ColdGolf: นั่นไม่ชัดเจนสำหรับฉัน คุณหมายถึงฉันสามารถใช้say(มีก) สำหรับการพิมพ์ได้ตราบใดที่การสร้างอาร์กิวเมนต์ไม่ได้ใช้ตัวอักษรต้องห้าม?
Ton Hospel

"อย่างไรก็ตามคุณต้องไม่ใช้อักขระใด ๆ ด้านล่างในรหัสของคุณ: * A ไม่ว่าจะเป็นตัวพิมพ์ใหญ่หรือตัวพิมพ์เล็ก" print "No using the letter with code point 65";จากที่ผมต้องการ
haykam

@ColdGolf นั้นหมายถึงการตอบคำถามในทางใดทางหนึ่ง?
ฮอบส์

10

> <> , 6 ไบต์

'|;o-$

สิ่งนี้จะสร้างสตริงของตัวละครเด้งและสร้างมันอีกครั้งในสิ่งที่ตรงกันข้ามพลิกรายการสแต็ค 2 รายการด้านบนและลบ: '|' (124) ลบ ';' (59) คือ 'A' (65)

ลองออนไลน์


2
ดี! ฉันได้มา'$-o;|ซึ่งเกือบจะเหมือนกัน แต่ไม่มีการกระดอน (ใช้|;o-$'งานได้)
สุ่ม

1
@randomra โอ้จริง! ที่จะทำงานได้เร็วขึ้นแน่นอนงานที่ดีมาก
torcado

10

Ruby, 15 12 ไบต์

$><<to_s[-3]

1
คุณสามารถบันทึก 2 ไบต์การเปลี่ยนแปลง$><<ที่จะp ทำให้p to_s[-3]
ePHI

@Ephi pเรียกinspectใช้อาร์กิวเมนต์ของมันดังนั้นผลลัพธ์จะถูกยกมาซึ่งจะตัดสิทธิ์
Jordan

ฉันพลาดว่าเป็นส่วนหนึ่งของความท้าทายที่ฉันจะให้ความคิดเห็นเหล่านั้นที่ผมคิดว่ามันเป็นข้อมูลที่น่าสนใจ :)
ePHI

10

Java, 55 ไบต์

void f(){System.err.write('c'-2);System.err.println();}

เนื่องจากรหัสต้องพิมพ์จึงจำเป็นต้องมีหนึ่งในสองตัวเขียนภายใน คือดีออกเพราะมันมีSystem.out ทำงานอย่างไรuSystem.err

อุปสรรค์ต่อไปคือการจัดการ Java ของและchar intเนื่องจากไม่ได้รับอนุญาตให้ส่งcharเนื่องจากมีaและเนื่องจาก'c' - 2ได้รับการเลื่อนระดับintจึงจำเป็นต้องใช้กลไกอื่น System.errเป็นPrintWriterซึ่งมีwrite(char)วิธีการ write(int)แต่ไม่ ใส่'c' - 2เข้าไปในนั้นcharโดยไม่ต้องบังคับ

ในที่สุดทุกครั้งที่ฉันรันโปรแกรมบัฟเฟอร์System.errจะไม่ลบล้างอย่างที่ควรจะเป็นและโปรแกรมก็ไม่ได้พิมพ์อะไรเลย ดังนั้นฉันต้องล้างมันด้วยตนเอง อย่างไรก็ตามSystem.err.flush()ไม่ได้รับอนุญาตดังนั้นฉันจึงเรียกว่าprintln()กระแสข้อมูลที่แฝงอยู่โดยปริยาย


9

MATL, 5 ไบต์

YNVH)

ลองออนไลน์

คำอธิบาย

YN      % Creates a NaN value (not a number)
V       % Convert it to a string
H)      % Grab the second letter ('a')
        % Implicitly display the result

คำตอบเดิมของฉันคือวิธีการตรงไปตรงมาโดยใช้ตัวอักษรที่กำหนดไว้ล่วงหน้าlY2ซึ่งให้ผล'A'...'Z'แล้วเลือกองค์ประกอบแรก, 'A'.

lY2l)

9

Javascript, 18 ไบต์ 16 ไบต์, 12 ไบต์ 11 ไบต์

` ${!2}`[2]

ตามพื้นฐานjsfuck ที่แก้ไขแล้ว(ต้องหาวิธีแทนที่+ด้วย-)

Ungolfed?

อย่างน้อยรุ่นที่มีความคิดเห็น (โปรดทราบว่ารุ่นนี้อาจไม่ทำงาน):

` ${      // whitespace to make "a" the third letter
  !2      // returns false
}`        // convert to string "false"
[2]       // index the third letter in " false" (note the whitespace)

โซลูชันเก่า:

`${![]}`[-(-!![])]

คุณสามารถแทนที่วงเล็บด้วยช่องว่างระหว่างเครื่องหมายลบ
PurkkaKoodari

@ Pietu1998: ฉันสังเกตเห็นว่า3ได้รับอนุญาตดังนั้นแทนที่สิ่งทั้งหมดด้วยเบื่อเก่าที่3-2จะได้รับ1
slebetman

บันทึกหนึ่งไบต์ต้องขอบคุณคำตอบของ Conor O'Brien
ฆ่า

1
เอ่อไม่มีความผิด แต่นี่เป็นคำตอบของฉัน ยกเว้นคุณใช้ false แทน NaN และไม่ใช้ฟังก์ชัน
Conor O'Brien

8

เป็นกลุ่ม, 16 13 11 10 การกดแป้น

ขอบคุณ H Walters สำหรับการบันทึกสองปุ่ม

ขอบคุณ DJMcMayhem สำหรับการบันทึกอีก!

:h%<cr>jvyZZp
:h%<cr> #open help for percent
jvy     #move down one char (to the letter "a"), visual mode the character, yank
ZZ      #exit help for percent
p       #put yanked character

วิธีการที่ดีมาก!
YetiCGN

2
บันทึก 3 ไบต์ แทนที่จะพยายาม:h<cr> :h%<cr>นั่นเป็นหนึ่งในตัวละครพิเศษ แต่คุณ%จบลงด้วยความช่วยเหลือด้วยเคอร์เซอร์ของคุณเหนือก ดังนั้นจากที่นี่คุณสามารถแทนที่ด้วย33ll j
H Walters

ขอโทษสำหรับการพิมพ์ผิดที่ชัดเจน (บันทึก2ไบต์)
H Walters

คุณสามารถใช้ZZแทน:q<cr>การบันทึกอีกอันได้
DJMcMayhem

8

R, 27 12 ไบต์

แก้ไข:เวอร์ชันใหม่จากแนวคิดที่ยอดเยี่ยมจาก @Jarko Dubbeldam

LETTERS[T*T]

ค่อนข้างท้าทาย!

โดยพื้นฐานแล้วจะใช้26thองค์ประกอบของเวกเตอร์ที่กลับด้านที่มีตัวอักษรตัวพิมพ์ใหญ่ ( LETTERSซึ่งเป็นเวกเตอร์ในตัวของR )

รุ่นก่อนหน้าs (หมายเลขเดียวกันของ bytes) :

L=LETTERS;rev(L)[length(L)]
rev((L=LETTERS))[length(L)]

1
สายไปนิด LETTERS[T*T]แต่คุณสามารถประหยัดไม่น้อยด้วย Tประเมินผล1เมื่อทำการดำเนินการเชิงตัวเลข
JAD


นี่ไม่ใช่วิธีแก้ปัญหาทางเทคนิค --- พิมพ์ '[1] "a' 'แทนที่จะเป็น' a '
JDL

8

> <> , 7 4 ไบต์

บันทึก 3 ไบต์ขอบคุณTeal pelican

"-o.

ลองออนไลน์!

คำอธิบาย

"-o."   # pushes the string "-o."
-       # subtracts the charcode of o from the charcode of . (dot), 111-46=65
o       # prints as character
.       # tries to pop 2 coordinates to jump to, but as nothing is left on the stack
        # the program ends in an error

ฉันจะทำแล้ว"B"1-o;
DanTheMan

@DanTheMan มันควรจะเป็นทางออกที่ชัดเจนมากขึ้น ฉันสงสัยว่าทำไมฉันไม่คิดอย่างนั้น: P
Emigna

@DanTheMan: - ปิดสิ่งที่แดนโพสต์คุณสามารถลดสิ่งนี้ลงไปอีก; "1-o; B หรือดียิ่งขึ้น" + o; & เป็นกรณีใดกรณีหนึ่งได้รับอนุญาตให้ทำ 5 ไบต์นี้ :) - คุณสามารถทำให้ได้ 4 ไบต์ด้วยข้อผิดพลาด; "-o.
นกกระทุงนกเป็ดน้ำ

@Tealpelican: นั่นยอดเยี่ยม! ใช้สายมักจะสั้นที่สุดในความท้าทายเช่นนี้ แต่ผมไม่ได้พิจารณาว่า :)
Emigna

เมื่อฉันเห็นความคิดเห็นของ Dan มันทำให้ฉันนึกถึงความท้าทายที่ค่อนข้างเก่ากว่าเช่นนี้ดังนั้นให้ใช้แนวคิดเดียวกัน :)
Teal pelican

7

เป็นกลุ่ม 2 Keystrokes

vim -u NONEจากนั้นเรียกใช้สิ่งต่อไปนี้ ( -u NONEปิดการปรับแต่ง)

i<up>

เมื่อ vim ทำงานในโหมดที่เข้ากันได้ปุ่มลูกศรจะไม่ถูกตีความอย่างเหมาะสม <up>ได้รับการตีความ<esc>OAซึ่งปล่อยให้ต่อไปนี้ในโหมดแทรก สิ่งที่จะจากไป (ด้วยการขึ้นบรรทัดใหม่สองสามบรรทัด)

A

iเริ่มโหมดแทรก
<up>ออกจากโหมดแทรกเปิดบรรทัดด้านบนและป้อน A ลงในบัฟเฟอร์

ตัวอย่างของคนที่พบสิ่งนี้ในป่า https://stackoverflow.com/questions/6987317/while-moving-the-cursor-across-a-vim-process-open-in-a-tmux-session-every-now-a/6988748#6988748


ฉันหัวเราะขณะที่อ่าน นี่เป็นงานที่ดี อาวุธที่ยอดเยี่ยมของสิ่งที่ฉันรู้
udioica

6

Brainfuck, 192 19 ไบต์

----[>---<----]>--.

ขอบคุณ @NinjaBearMonkey ที่ช่วยฉันบันทึก hella bytes

-------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -----------------------------------------

ฉันไม่เก่งที่ Brainfuck ดังนั้นฉันจึงมั่นใจว่ามีวิธีแก้ปัญหาที่สั้นกว่า แต่มันทำงานได้โดยการลดลงต่ำกว่า 0 หมุนไบต์ไปเรื่อย ๆ จนกระทั่งมันลงไปที่ 'A' จากนั้นมันจะพิมพ์ออกมา


1
ไม่ใช่คู่แข่งที่จริงจัง หากคุณตีมันลงจริงๆผู้ลงคะแนนอาจกลับโหวตของพวกเขา
เลมอนที่ถูกทำลายได้

มันจะสั้นกว่าหรือไม่ที่จะนับได้ถึง 65 แม้จะมี 65 plusses ก็ตาม
NinjaBearMonkey

2
'+' ไม่ได้รับอนุญาตดังนั้นฉันต้องย้อนกลับไป
โคดี้

ขออภัยฉันไม่เห็นสิ่งนั้น นอกจากนี้ยังห่างไกลสั้นวิธีที่จะทำให้ 191แม้ว่า
NinjaBearMonkey

2
นั่นเป็นวิธีแก้ปัญหา 192 byte ฉันเพิ่งทิ้งและทำ strikethrough แทนที่จะลบเพราะฉันคิดว่ามันตลกไปจาก 192 ถึง 19
โคดี

6

JavaScript (ES6), 21 ไบต์

_=>(8^2).toString(22)

ฉันพยายามแปลงfalseเป็นสตริงเพื่อทำสิ่งนี้ แต่เดิมใช้เวลา 23 ไบต์ในขณะนั้น ฉันได้คิดวิธีที่สั้นกว่านี้มา 14 ไบต์:

_=>`!${!2}`[2]

ผมไม่คิดว่าคุณจะได้รับตัวพิมพ์ใหญ่Aภายใต้กฎระเบียบเนื่องจากคุณต้องการหนึ่งString.fromCharCodeหรือทั้งสองซึ่งประกอบด้วย.toUpperCase()a


คุณสามารถรับตัวพิมพ์ใหญ่โดยใช้ JSF หรืออนุพันธ์โดยใช้คุณสมบัติที่คำนวณได้
Downgoat

1
@Downgoat Conor O'Brien แสดงให้เห็นแล้วว่าอย่างไร
Neil

6

C, (19?) 24 ไบต์

ขอบคุณเดนนิส:

f(){printf("%c",88-23);}

ความยาวเท่ากัน:

f(){printf("%c",'C'-2);}

ซึ่งทำให้ตัวพิมพ์เล็ก:

f(){printf("%c",'c'-2);}

มีวิธีการแก้ปัญหา19 ไบต์เป็นฟังก์ชั่นการแก้ไขพารามิเตอร์ซึ่งมีข้อบกพร่อง:

g(int*p){*p='C'-2;}

//Usage:

main(){
  int c; //cannot be char
  g(&c);
  printf("%c\n",c);
}

หากcมีการประกาศcharให้gแก้ไขทั้งหมดintดังนั้นมันจะแตกสแต็กซึ่งทำให้ค่าอื่น ๆ ที่จะแก้ไขหรือ programm จะยกเลิกด้วยข้อผิดพลาด วิธีเดียวที่จะหลีกเลี่ยงคือการประกาศint c;ในmainและพิมพ์ด้วย"%c"แต่ที่รู้สึกเหมือนช่องโหว่

โซลูชั่นที่เก่ากว่า

f(){printf("%c",'B'-2/2);} //26 bytes
f(i){i='B';printf("%c",--i);} //29 bytes
f(){int*i="B";int j[]={*i-(2/2),2-2};printf("%s",j);} //53 bytes

เพียงฟังก์ชั่นเนื่องจากmainเป็นสิ่งต้องห้าม


3
88-23ควรบันทึกไม่กี่ไบต์
เดนนิส

สำหรับตัวพิมพ์เล็ก a คุณสามารถใช้ (333-33) / 3-3 มันไม่สั้นเท่ากับ 'c'-2 แต่มันคือ 3er 33 * 3-2 ก็เป็นไปได้เช่นกัน
rici

หากคุณใช้ write () แทน printf คุณสามารถสร้างโปรแกรมได้ ระบุขั้นตอนการสร้างเพื่อให้แน่ใจว่าคุณไม่ได้เชื่อมโยงกับ libc ใด ๆ เลย หากไม่มี _start สัญลักษณ์แรกจะถูกข้ามไปและอนุญาตให้ _exit ปลอดภัย gcc อย่างน้อยหนึ่งรุ่นจะปรับการเขียน () ลงใน syscall โดยตรงโดยไม่ต้องเรียกใช้ฟังก์ชันเลย
Joshua

ทั้งนี้ขึ้นอยู่กับ IDE ของคุณคุณสามารถทำสิ่งนี้: printf("%c",~'ɦ');แม้ว่า "A" จะมีเครื่องหมายเน้นเสียงเพิ่ม heh
Albert Renshaw

@AlbertRenshaw ɦเป็นอักขระ 2 ไบต์
Karl Napf

6

dc, 4 ไบต์

833P

UCHAR_MAX โอเวอร์โฟลว์ผ่านตารางหกสามครั้งก่อนลงจอดที่ 65


6

ลัวะ 36 ไบต์

หนึ่งนี้เอาฉันในขณะที่ตั้งแต่หลายฟังก์ชั่นมาตรฐาน Lua จะถูกนำออกไปจากกฎระเบียบ (ทั้งหมดmath, string.char, string.match, pairsแม้next)

สิ่งนี้ใช้ประโยชน์จากข้อเท็จจริงที่ว่า Lua มีทั่วโลก_VERSIONที่มักเริ่มต้นด้วย "Lua" (เช่นLua 5.1หรือคล้ายกับรุ่นอื่น ๆ ) ดังนั้นหากสิ่งนี้ทำงานบนล่ามที่ไม่สำคัญตัวอักษรที่สามจะเป็น 'a'

print(({_VERSION:find("..(.)")})[3])

{...}[3]คือการจัดกลุ่มผลของการfindซึ่งยังรวมถึงดัชนีที่มันจับคู่แล้วกลับรายการที่สามซึ่งเป็นตัวละครที่ตรงกัน (คนa)


1
print(({type{}:find".(.)"})[3]) 31 bytes
Egor Skriptunoff

6

Haskell ขนาด 10 ไบต์

เป็นฟังก์ชั่น (หรือมากกว่าคำสั่งที่ไม่จำเป็นต้องมีการป้อนข้อมูล)

f=pred 'B'

ไม่หลอกลวง ลองใช้กับ Ideone mainโปรแกรมเต็มรูปแบบเป็นไปไม่ได้เช่นนี้จะต้องมี


ฉันไม่คิดว่ามันถูกต้อง งานที่ต้อง "พิมพ์" หรือ A"จอแสดงผล" ฟังก์ชั่นของคุณเพียงแค่ส่งกลับและโปรแกรมการเชื่อมโยงจะแสดงผ่านทางซึ่งการใช้งานputChar u
nimi

คุณถูกต้องอย่างไรก็ตามกฎได้รับการปรับปรุงและตอนนี้กลับมาจากฟังก์ชั่นดูเหมือนจะโอเค
Laikoni

ไม่มีกฎระเบียบที่ยังคงพูดและprint / หรือ display
nimi

2
เดนนิสถามอย่างชัดเจนว่าการกลับมาจากฟังก์ชั่นแทนที่จะพิมพ์นั้นใช้ได้หรือไม่และ OP ตอบกลับด้วยใช่ แต่ข้อความที่อัปเดตในภายหลังของคำถามยังคงไม่สะท้อนสิ่งนี้ ฉันเดาว่าเรายังคงต้องรอการชี้แจงเพิ่มเติม
Laikoni

1
OP ยืนยันว่าAควรพิมพ์ / แสดงและไม่ส่งคืน
nimi


5

กระแสตรง, 8 7 ไบต์

-1B ขอบคุณเดนนิส

88 23-P

กด 88 กด 23 ลบออกจาก 65 พิมพ์ด้านบนของสแต็ก (65) เป็นสตริง ASCII ซึ่งจะขึ้นบรรทัดใหม่

แก้ไข:

นี่เป็นอีกสองสามวิธีที่ฉันคิดขึ้นมา มันเป็นเกมของ "สร้างหมายเลข 65 และ 97 โดยใช้อย่างเดียว[238B-F]และไม่ต้องเพิ่ม" แดกดันฉันพบว่าสิ่งที่ยาวที่สุดน่าสนใจที่สุด

_Fdd/r-oC 2-n  # involves changing the base
2_2/8d*3*2/-P
Idd2/2/-2*on   # also changes base
2d8r^r_2/-P
8d*2_2/-P
B 3d**2-P
33 3*2-P
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.