การนับจำนวนเข้าด้วยกัน


29

ความท้าทายของคุณคือการเขียนNตัวอย่างของรหัสดังกล่าวว่าเมื่อคุณ concatenate แรกK ≥ 1 ร่วมกันที่พวกเขาผลิตจำนวนK ยิ่งNสูงยิ่งดี นี่คือการจับ: คุณไม่สามารถใช้ตัวละครมากกว่าหนึ่งครั้งในตัวอย่างของคุณ

กฎระเบียบ

  • คุณสามารถใช้อักขระเดียวกันหลายครั้งในข้อมูลโค้ดหนึ่ง (และเพียงหนึ่ง)
  • ตัวอย่างเหล่านี้จะต้องต่อกันตามลำดับที่ปรากฏโดยไม่ต้องข้าม
  • คุณต้องเขียนตัวอย่างอย่างน้อยสองตัว
  • ตัวอย่างทั้งหมดต้องเป็นภาษาเดียวกัน
  • เตือนความจำ: ตัวอย่างไม่จำเป็นต้องเป็นโปรแกรมหรือฟังก์ชั่นเต็มรูปแบบและไม่จำเป็นต้องทำงานด้วยตัวเอง -1เป็นตัวอย่างข้อมูลที่ถูกต้องใน Java เช่น
  • การต่อข้อมูลผลลัพธ์ทั้งหมดต้องส่งออกค่าKตามลำดับ
  • ผู้ชนะคือบุคคลที่มีค่าNสูงสุด Tie-breaker เป็นความยาวของโปรแกรมโดยรวมที่สั้นที่สุดในหน่วยไบต์

ตัวอย่าง

สมมติว่าตัวอย่างของคุณมีAD, xc, และ123 ;lแล้ว:

  • AD ควรผลิต 1
  • ADxc ควรผลิต 2
  • ADxc123 ควรผลิต 3
  • และควรผลิตADxc123;l4

โปรแกรมนี้จะมีคะแนนของ4


4
เนื่องจากต้องเป็นตัวอย่างในภาษาที่อิงตามสแต็กตัวเลขจึงสามารถผลักลงบนสแต็กได้ใช่ไหม
สิ้นเชิงมนุษย์

เพื่อเพิ่มคำถามทั้งหมดของมนุษย์ในภาษาที่ใช้สแต็คเป็นค่าสูงสุดที่มีความสำคัญเท่านั้น นั่นคือตัวอย่างข้อมูลสองรายการแรกใน dc อาจเป็น1และ '2` ได้หรือไม่
brhfl

@tallyallyhuman ฉันจะบอกว่าไม่ - ในสภาพแวดล้อมแบบกองซ้อนหากคุณมีหลายค่าในกองซ้อนคุณ "สร้าง" มากกว่าหนึ่งค่าแทนที่จะเป็นจำนวนเต็มหนึ่งที่ร้องขอ
Conor O'Brien

@brhfl ดูด้านบน
Conor O'Brien

@ ConorO'Brien สามารถพิจารณาผลลัพธ์ที่ด้านบนสุดของสแต็กได้หรือไม่ 'มิฉะนั้นแล้วมันเป็นไปไม่ได้จริงในภาษาสแต็กที่ไม่มี IO โดยนัย ...
สิ้นเชิงมนุษย์

คำตอบ:


10

Python 3 , 1 112 056 ตัวอย่าง, 4 383 854 ไบต์

นี้จะคล้ายกับ@ WheatWizard ของงูหลาม 2 คำตอบ ฉันเริ่มต้นทำสิ่งนี้ไม่นานก่อนที่มันจะโพสต์ แต่การแยกแยะนิสัยแปลก ๆ ของไพ ธ เกี่ยวกับตัวละครที่ไม่ใช่ ASCII และเส้นยาวใช้เวลาพอสมควร ผมค้นพบว่างูหลามอ่านเส้น 8191 ไบต์ในเวลาและเมื่อบรรดา 8191 ไบต์มีเพียงส่วนหนึ่งของตัวละครหลายไบต์, Python พ่นSyntaxError

ข้อมูลแรกใช้การเข้ารหัสจากน้อยที่สุดตัวละคร (ที่แตกต่างกัน) สำหรับทัวริงสมบูรณ์

exec('%c'%(111+1)+'%c'%(111+1+1+1)+'%c'%(11+11+11+11+11+11+11+11+11+1+1+1+1+1+1)+'%c'%(11+11+11+11+11+11+11+11+11+11)+'%c'%(111+1+1+1+1+1)+'%c'%(11+11+11+1+1+1+1+1+1+1)+'%c'%(11+11+11+11+11+11+11+11+11+1+1+1+1+1+1+1+1+1)+'%c'%(11+11+11+11+11+11+11+11+11+1+1)+'%c'%(11+11+11+11+11+11+11+11+11+11)+'%c'%(11+11+11+1+1+1+1+1+1+1)+'%c'%(111)+'%c'%(111+1)+'%c'%(11+11+11+11+11+11+11+11+11+1+1)+'%c'%(11+11+11+11+11+11+11+11+11+11)+'%c'%(11+11+11+1+1+1+1+1+1+1)+'%c'%(11+11+11+11+11+11+11+11+1+1+1+1+1+1+1)+'%c'%(11+11+11+11+11+11+11+11+1+1+1+1+1+1+1)+'%c'%(11+11+11+11+11+11+11+11+11+1+1+1)+'%c'%(11+11+11+11+11+11+11+11+11+1+1+1+1+1+1)+'%c'%(11+11+11+11+11+11+11+11+11+1+1+1+1+1+1+1+1+1)+'%c'%(11+11+11+11+11+11+11+11+11+1+1)+'%c'%(11+11+11+11+11+11+11+11+1+1+1+1+1+1+1)+'%c'%(11+11+11+11+11+11+11+11+1+1+1+1+1+1+1)+'%c'%(11+11+11+1+1+1+1+1+1+1+1)+'%c'%(11+11+11+11+1+1)+'%c'%(111+1+1+1)+'%c'%(11+11+11+11+11+11+11+11+11+1+1)+'%c'%(11+11+11+11+11+11+11+11+1+1+1+1+1+1+1+1+1)+'%c'%(11+11+11+11+11+11+11+11+11+1)+'%c'%(11+11+11+1+1+1+1+1+1+1)+'%c'%(11+11+11+1+1+1+1+1+1+1+1)+'%c'%(11+11+11+1+1+1+1+1+1+1+1)+'%c'%(11+11+11+11+1)+'%c'%(11+11+11+11+1+1+1+1+1)+'%c'%(11+11+11+11+1+1+1+1+1+1)+'%c'%(11+11+11+11+11)+'%c'%(11+11+11+11+1+1+1+1)+'%c'%(11+11+11+1+1+1+1+1+1+1++++++++++1))

ความน่าพิศวงนี้เพียงสร้างสตริงต่อไปนี้และดำเนินการ

print(len(open(__file__).read())-1260)

ตัวอย่างต่อไปนี้มีความยาวทั้งหมดหนึ่งตัวอักษร อักขระสามตัวถัดไป\n, และ\r #อักขระ Unicode ที่เหลือทั้งหมด (ยกเว้นตัวแทน) ตามลำดับที่เฉพาะเจาะจงดังนั้นพวกเขาจึงสอดคล้องกับขอบเขต 8191- ไบต์

สคริปต์ต่อไปนี้จะสร้างโปรแกรมที่เหมาะสมสำหรับการป้อนข้อมูลkระหว่าง1และ1112056

j = 4
s = "exec('%c'%(111+1)+'%c'%(111+1+1+1)+'%c'%(11+11+11+11+11+11+11+11+11+1+1+1+1+1+1)+'%c'%(11+11+11+11+11+11+11+11+11+11)+'%c'%(111+1+1+1+1+1)+'%c'%(11+11+11+1+1+1+1+1+1+1)+'%c'%(11+11+11+11+11+11+11+11+11+1+1+1+1+1+1+1+1+1)+'%c'%(11+11+11+11+11+11+11+11+11+1+1)+'%c'%(11+11+11+11+11+11+11+11+11+11)+'%c'%(11+11+11+1+1+1+1+1+1+1)+'%c'%(111)+'%c'%(111+1)+'%c'%(11+11+11+11+11+11+11+11+11+1+1)+'%c'%(11+11+11+11+11+11+11+11+11+11)+'%c'%(11+11+11+1+1+1+1+1+1+1)+'%c'%(11+11+11+11+11+11+11+11+1+1+1+1+1+1+1)+'%c'%(11+11+11+11+11+11+11+11+1+1+1+1+1+1+1)+'%c'%(11+11+11+11+11+11+11+11+11+1+1+1)+'%c'%(11+11+11+11+11+11+11+11+11+1+1+1+1+1+1)+'%c'%(11+11+11+11+11+11+11+11+11+1+1+1+1+1+1+1+1+1)+'%c'%(11+11+11+11+11+11+11+11+11+1+1)+'%c'%(11+11+11+11+11+11+11+11+1+1+1+1+1+1+1)+'%c'%(11+11+11+11+11+11+11+11+1+1+1+1+1+1+1)+'%c'%(11+11+11+1+1+1+1+1+1+1+1)+'%c'%(11+11+11+11+1+1)+'%c'%(111+1+1+1)+'%c'%(11+11+11+11+11+11+11+11+11+1+1)+'%c'%(11+11+11+11+11+11+11+11+1+1+1+1+1+1+1+1+1)+'%c'%(11+11+11+11+11+11+11+11+11+1)+'%c'%(11+11+11+1+1+1+1+1+1+1)+'%c'%(11+11+11+1+1+1+1+1+1+1+1)+'%c'%(11+11+11+1+1+1+1+1+1+1+1)+'%c'%(11+11+11+11+1)+'%c'%(11+11+11+11+1+1+1+1+1)+'%c'%(11+11+11+11+1+1+1+1+1+1)+'%c'%(11+11+11+11+11)+'%c'%(11+11+11+11+1+1+1+1)+'%c'%(11+11+11+1+1+1+1+1+1+1++++++++++1))"
l = 1
c = \
        [
                None,
                [n for n in range(0x80) if chr(n) not in "\n\r#%'()+1cex"],
                [*range(0x80, 0x800)],
                [*range(0x800, 0xd800), *range(0xe000, 0x10000)],
                [*range(0x10000, 0x110000)]
        ]

k = int(input())
assert k in range(1, 1112057)
s += '\n\r#'[:k - 1]
k -= 4

while j:
                while k > 0 and c[j] and l + j < 8191:
                        s += chr(c[j].pop())
                        l += j
                        k -= 1
                if k < 1:
                        print(end = s)
                        break
                elif c[j] == []:
                        j -= 1
                else:
                        s += chr(c[8191 - l].pop())
                        print(end = s)
                        k -= 1
                        s = ''
                        l = 0

4
คุณเคยแพ้ไหม
Patrick Roberts

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


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

@WheatWizard ไม่ตัวอักษรบวกเครื่องหมายการรวมเป็นอักขระ Unicode สองตัว
เดนนิส

13

Perl 5, 50,091 151 ตัวอย่าง

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

use utf8; print length A

ตัวอย่างที่ 2 ถึง 26: Bผ่านZ

ตัวอย่างที่ 27 ถึง 46: aถึงzไม่รวมอักขระใน "ความยาว"

ตัวอย่างที่ 47 ถึง 56 ตัวอย่าง: 0ผ่าน9

ตัวอย่างที่ 57: _

ตัวอย่างที่เหลือคืออักขระ Unicode 50,105 ตัวซึ่ง Perl ถือว่าเป็นตัวอักษร "คำ" โดยไม่รวมอักขระที่แตกต่างกัน 14 ตัวในตัวอย่างแรกในลำดับใดก็ได้

มันเป็นความคิดที่ดี แต่ปรากฎว่าหลังจาก Perl มีความยาวพอสมควรจะทำให้คุณมีข้อผิดพลาด "ตัวระบุยาวเกินไป" นี่เป็นโปรแกรมรวมที่ยาวที่สุดที่ฉันสามารถรับ Perl เพื่อย่อย:

use utf8; print length A012345679BCDEFGHIJKLMNOPQRSTUVWXYZ_abcdjkmoqsvwxyzĀāĂ㥹ĆćĈĉĊċČčĎďĐđĒēĔĕĖėĘęĚěĜĝĞğĠġĢģĤĥĦħĨĩĪīĬĭĮįİıIJijĴĵĶķĸĹĺĻļĽľĿŀŁłŃńŅņŇňʼnŊŋŌōŎŏŐőŒœŔŕŖŗŘřŚśŜŝŞşŠšŢţ

หน้าคู่มือ perldiag กล่าวว่า "Perl ในอนาคตมีแนวโน้มที่จะกำจัดข้อ จำกัด โดยพลการ" แต่ Perl 5.18 ของฉันยังไม่ได้ทำ

คำอธิบาย:

ในโหมดที่ไม่เข้มงวด Perl 5 จะตีความสตริงอักขระคำที่ไม่ได้ยกมาในรูปแบบ "barewords" โดยอ้างถึงพวกเขาโดยอัตโนมัติ พวกเขามักจะหลีกเลี่ยงที่ดีที่สุด แต่พวกเขาช่วยได้ที่นี่!


4
a-zตัวอย่างของคุณมักจะใช้อักขระจากตัวอย่างแรกของคุณ
Jonathan Frech

ใช่แน่นอนขอบคุณ คงที่
ฌอน

ฉันขอแนะนำให้คุณทำคำตอบที่เหมือน "ตู้โชว์" เพราะเกือบทั้งหมด (นอก) langs - jelly, pyth และอื่น ๆ - มีพฤติกรรมนี้
Rod

ฉันไม่ทราบว่า "คำตอบที่เหมือนการแสดง" หมายถึงอะไร
Sean

1
@Sean Plenty สามารถพบได้ใน esolangs.org และเนื่องจากวิธีการนี้ไม่จำเป็นต้องมีความเข้าใจอย่างละเอียดในการทำงานคุณสามารถเรียนรู้สิ่งที่คุณต้องการจากเว็บไซต์ นอกจากนี้ที่ไม่ใช่ esolangs จำนวนมากแสดงพฤติกรรมนี้; ตัวอย่างแรกเล็กน้อย TI-BASIC length("length(จะเป็น
Khuldraeseth na'Barya

10

Python 2คะแนน 32

for r in range(32):locals()[''.join(map(chr,range(65,66+r)[:26]+range(117,92+r)))]=r+1
print A

ด้วยเกร็ดเล็กเกร็ดน้อยที่ตามมาB, C, D... Y, Z, u, v, w, x, ,yz

ในการกลับมาประชดประชันอย่างน่าทึ่ง Python 3 รองรับตัวระบุ Unicode ซึ่งจะทำให้เรางี่เง่ามากกับเคล็ดลับนี้ - แต่มันไม่สามารถทำได้printหากไม่มีวงเล็บ ฉันสามารถยัดตัวเลขลงในตัวระบุได้เช่นกัน แต่ฉันไม่คิดว่าวิธีนี้สนุกมากที่จะบีบให้ออก

ลองออนไลน์!

Python 2 , คะแนน 18, โกงน้อยลง

print 0x10-1&0x1
print 0x10-1&0x12
print 0x10-1&0x123
print 0x10-1&0x1234
print 0x10-1&0x12345
print 0x10-1&0x123456
print 0x10-1&0x1234567
print 0x10-1&0x12345678
print 0x10-1&0x123456789
print 0x10-1&0x123456789A
print 0x10-1&0x123456789Ab
print 0x10-1&0x123456789Abc
print 0x10-1&0x123456789Abcd
print 0x10-1&0x123456789AbcdE
print 0x10-1&0x123456789AbcdEf
print 0x10-1&0x123456789AbcdEf^((()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==()))
print 0x10-1&0x123456789AbcdEf^((()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==()))|[[[]]>[]][[]>[]]
print 0x10-1&0x123456789AbcdEf^((()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==()))|[[[]]>[]][[]>[]]<<False**False

ลองออนไลน์!


10

JavaScript (ES6, V8 6.x) 52 50,298 119,526 119,638 119,683 128,781 ตัวอย่าง, 88 149,147 575,179 575,631 576,121 612,789 ไบต์

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

ใช้ ASCII เท่านั้น

console.log(new Proxy({},{get:(n,{length:e})=>e>>(e/e)}).nn$$00112233445566778899AABBCCDDEEFFGGHHIIJJKKLLMMNNOOQQRRSSTTUUVVWWXXYYZZ__aabbccddffiijjkkmmppqqssuuvvzz)

คำอธิบาย

สิ่งนี้ใช้เทคนิค metaprogramming Proxyเพื่อเปิดใช้งานตัวจัดการ get handlerบนวัตถุและเข้าถึงชื่อคุณสมบัติเป็นสตริงโดยคืนค่าตัวระบุlength / 2เป็นค่า

ด้วยข้อมูลโค้ดแรกที่เริ่มต้นเป็นnew Proxy({},{get:(n,{length:e})=>e>>(e/e)}).nnตัวอย่างข้อมูลเพิ่มเติมแต่ละอันจะเพิ่มสตริงlengthของตัวระบุโดย2การตรวจสอบให้แน่ใจว่า.repeat()มีจุดรหัสที่เกี่ยวข้องสองครั้งสำหรับอักขระ 2 ไบต์ utf-16 และหนึ่งครั้งสำหรับอักขระ 4 ไบต์ utf-16

ตัวระบุใน JavaScript

ในECMAScript ข้อมูลจำเพาะการIdentifierNameถูกกำหนดโดยใช้ไวยากรณ์ต่อไปนี้:

IdentifierName::
  IdentifierStart
  IdentifierName IdentifierPart

IdentifierStart::
  UnicodeIDStart
  $
  _
  \UnicodeEscapeSequence

IdentifierPart::
  UnicodeIDContinue
  $
  _
  \UnicodeEscapeSequence
  <ZWNJ>
  <ZWJ>

UnicodeIDStart::
  any Unicode code point with the Unicode property “ID_Start”

UnicodeIDContinue::
  any Unicode code point with the Unicode property “ID_Continue”

การสร้างคำตอบ

เริ่มแรกใช้คุณสมบัติ "ID_Continue" Unicode ฉันเขียนสคริปต์ Node.js ที่สร้างคำตอบแบบเต็ม ตอนนี้มันเป็นเพียงสคริปต์ฝั่งไคลเอ็นต์ที่ใช้ความไร้เดียงสาeval()เพื่อทดสอบอักขระที่ถูกต้องทำซ้ำผ่านจุดโค้ด unicode ทั้งหมดแทน:

// first snippet
let answer = 'new Proxy({},{get:(n,{length:e})=>e>>(e/e)}).nn'

const used = Array.from(
  answer,
  c => c.codePointAt(0)
).sort(
  (a, b) => a - b
)

// create a O(1) lookup table for used characters in first snippet
const usedSet = Array.from(
  { length: Math.max(...used) + 1 }
)

for (const codePoint of used) {
  usedSet[codePoint] = true
}

// equal to 1 for first snippet
let snippets = eval(answer)
let identifier = ''

for (let codePoint = 0, length = 0x110000; codePoint < length; codePoint++) {
  const character = String.fromCodePoint(codePoint)

  // if unused
  if (usedSet[codePoint] === undefined) {
    // if valid `IdentifierPart`
    try {
      eval(`{let _${character}$}`)
    } catch (error) {
      // console.log(character)
      continue
    }

    // repeat so that `snippet.length === 2`
    identifier += character.repeat(2 / character.length)
    snippets++
  }
}

// number of snippets generated
console.log(`snippets: ${snippets}`)

const program = `console.log(${answer + identifier})`

// output of program to validate with
eval(program)

// download link to check number of bytes used
dl.href = URL.createObjectURL(new Blob([program], { type: 'text/javascript' }))
<a id=dl download=answer.js>Click to Download</a>

การทำงานstat -f%z answer.jsให้ผลนับไบต์ของ 612802 แต่เราลบ 13 ไบต์สำหรับconsole.log(และล้อม)รอบการส่งจริง

การเข้ารหัส

แหล่งที่มาจะถูกเก็บไว้เป็น utf-8 ซึ่งสะท้อนให้เห็นในจำนวนไบต์ขนาดใหญ่ของคำตอบ สิ่งนี้ทำได้เนื่องจาก Node.js สามารถเรียกใช้ไฟล์ต้นฉบับที่เข้ารหัสใน utf-8 เท่านั้น

JavaScript จัดเก็บสตริงภายในด้วยการเข้ารหัส utf-16 ดังนั้นสตริง "ความยาวอักขระ" ที่ส่งคืนใน JavaScript จริง ๆ แล้วเพียงครึ่งจำนวนไบต์ของสตริงที่เข้ารหัสใน utf-16


ทำไมไม่ใช้พูดxแทนที่จะ$ปล่อยให้มันเป็นตัวระบุพิเศษ?
Neil

@ Neil ฉันสังเกตเห็นว่าสักครู่ที่ผ่านมา ขณะนี้ฉันกำลังทำงานกับคำตอบที่ควรจะเป็นคะแนน ~ 119519 ตอนนี้ฉันได้รับมันเป็นเพียงเรื่องของการเข้ารหัสอย่างถูกต้อง
Patrick Roberts

ฉันลองสำเนา Spidermonkey JS shell ที่ฉันเคยนอน สนับสนุนเฉพาะตัวระบุที่แตกต่างกัน 50466 ตัว (เนื่องจากคุณใช้ 12 ในตัวอย่างข้อมูลเริ่มต้นของคุณนั่นจะให้คะแนนคุณ 50455)
Neil

ดูเหมือนว่าคะแนนจะต้องเท่ากับ 50297 เขียนคำตอบตอนนี้ ความจริงแล้วมีตัวระบุที่รองรับ 128,096 ตัวใน ES6 + โดยใช้ข้อกำหนด Unicode 10.0.0 แต่มีเพียงตัวเลขที่คุณกล่าวถึงเท่านั้นที่มีความยาวสตริงที่ 1 ไม่เช่นนั้นจะเป็นการยากที่จะนับจำนวนอักขระและ นั่นคือสิ่งที่ฉันถูกวางสาย
Patrick Roberts

1
@PatrickRoberts ขออภัยความผิดพลาดของฉันในขณะที่อ่านนี้ฉันถือว่าข้อความทั้งหมดจนกว่าข้อความที่ลงท้ายจะถูกขีดฆ่า ดวงตาของฉันต้องข้ามส่วนนั้นไป
Conor O'Brien

6

Python 2 , คะแนน6 10

+3 ขอบคุณ pizzapants184
+1 ขอบคุณ WheatWizard

4/4
*2
-~0
+1
|5
^3
&776%6
and 8
if[]else[9][9>9]
.__xor__((""=="").__xor__((""=="")<<(""=="")))

ลองออนไลน์!


หากคุณเปลี่ยนprint int(True)เป็นเพียง4/4คุณสามารถเพิ่มand 77 ได้โดยที่คุณไม่ต้องพิมพ์หมายเลขเพียง 'สร้าง' มัน
pizzapants184


การเพิ่ม&2จะเพิ่มคะแนนของคุณทีละคนเพราะ&มีความสำคัญมากกว่า^แต่คุณต้องทำให้หมายเลข 2 อย่างใด (คุณสามารถใช้[[]==[]][[]<[]]<<[[]==[]][[]<[]])
Wheat Wizard


1
@ pizzapants184 ordได้รับการขัดแย้งกับandแต่ฉันคงที่
ร็อด

6

TI-Basic (83 ซีรี่ส์, เวอร์ชั่น OS 1.15 หรือสูงกว่า) คะแนน: 17 18 19 24

(Tiebreaker: 53 ไบต์)

คุณสามารถได้รับคะแนนมากโดยใช้ความยาวสตริงตามปกติ: เริ่มต้นด้วย(ตามที่ @Scrooble ชี้ให้เห็น) และเพิ่มตัวอย่างโค้ดโทเค็นเดี่ยวจนจบ TI-Basic มีมากกว่า 700 รายการดังนั้นจึงใช้งานได้ดี แต่นี่เป็นวิธีการอื่น:length("A length("length(

int(log(11
2
3
4
5
6
7
8
9
0
Xmax
Ymax
nMax
abs(Xmin
Ymin
ππ
eee
³
²
₁₀^(₁₀^(X
+e^(⁻e^(Y))))
/√(sub(Z!
°
randrandrand

โปรดทราบว่า TI-ขั้นพื้นฐาน tokenized ดังนั้น (ตัวอย่าง) e^(คำสั่งไม่ได้ใช้ใด ๆ ของตัวละครe, ,^(

อาศัยคุณลักษณะที่ไม่มีเอกสารของsub(คำสั่ง: นอกเหนือจากการค้นหาสตริงย่อยแล้วยังสามารถใช้เพื่อหารจำนวนด้วย 100

งานนี้ถ้ามันทำงานบนเครื่องคิดเลขที่สดใหม่ซึ่งจะช่วยให้เราคิดว่าX, Y, Zเป็นศูนย์ทั้งหมดว่าตัวแปรหน้าต่างจะถูกตั้งค่ามาตรฐานของพวกเขาที่เครื่องคิดเลขอยู่ในโหมดเรเดียนและที่rand's ผลสามคนแรกจะอยู่ที่ประมาณ0.943, ,0.9080.146


4

PowerShell , 25 ไบต์, คะแนน 5

' '.count*2+!""-(-1)|%{5}

Snippet 1: เอาท์พุท' '.count 1มันทำได้โดยการใช้.countสตริงซึ่งเป็นหนึ่งเพราะมีเพียงหนึ่งสตริง ลองออนไลน์!

ตัวอย่างที่ 2: *2ผลลัพธ์2เพราะเรานำ1ตัวอย่างข้อมูลก่อนหน้านี้มาคูณด้วยสองลองออนไลน์!

ตัวอย่างที่ 3: +!""เอาท์พุท3โดยการเพิ่มบูลีน - ไม่ใช่ของสตริงที่ว่างเปล่า สิ่งนี้จะส่งสตริงว่างไป$trueที่ซึ่งจะถูกส่งไปอีกครั้งโดยนัย1ดังนั้นเราจึงเพิ่มหนึ่งลองออนไลน์!

ตัวอย่างที่ 4: -(-1)เอาท์พุท4เพียงลบหนึ่งลบลองออนไลน์!

ตัวอย่างที่ 5: |%{5}เอาท์พุท5โดยการใส่หมายเลขก่อนหน้านี้ลงในลูปและการวนซ้ำของลูปนั้น (เพียงอันเดียวเพราะมีเพียงหมายเลขอินพุตเดียว) เอาท์พุท5 ลองออนไลน์!

ขอขอบคุณที่ ม.ค. สำหรับวิธีสำรองของขึ้นมาด้วยและเป็นวิธีที่มีฝีมือในการขึ้นมาพร้อมกับ45


วิธีการเกี่ยวกับ' '.count*2+!""-(-1)|%{5}คะแนน 5 หรือไม่?
Jan

@Jan โอ้ขวาฮ่า ๆ คุณไม่จำเป็นต้องจริงกับการใช้งานภายใน$_ |%{ }ขอบคุณ!
AdmBorkBork

4

C, 10 ตัวอย่าง, 45 ไบต์

sizeof(char)              // sizeof(char) = 1
<<9/9                     // Multiply by two.
|1                        // 2 or 1 = 3
,4                        // Discard previous expression, return 4.
+!!8                      // Add one.
^3                        // 5 xor 3 = 6
&66                       // 3 and 66 = 2, 5 xor 2 = 7 (& has higher precedence)
??'0xF                    // Trigraph for '^'. 7 xor 15 = 8
-~-2                      // ~-2 = 1, 7 xor 14 = 9
*57%5                     // 1*57%5 = 2, 7 xor 13 = 10

ลองออนไลน์!


4

MATL , คะแนน8 15, 64 123 ไบต์

rg             % 1 Random number, make boolean (1)
Q              % 2 Increment
Yq             % 3 Nth prime
a,E]           % 4 any (convert to boolean 1. Do twice: Multiply by 2
T+             % 5 Add True
F~_-           % 6 Subtract negative (not(false)) = 6-(-1)
:sI/           % 7 Range 1:6, sum (21), divide by 3
A8*            % 8 All elements (True). Multiply by 8
d9             % 9 Clear stack, push 9
x10            % 10 Clear stack, push 10
WBPf           % 11 Raise 2^10. Convert to binary [1 0 ... 0], flip [0 0 ... 1]. Find
23ZP           % 12 Push 23, and calculate the distance between 11 and 23
yyyyyyyyyyyyyyyyyyyyyyyyhhhhhhhhhhhhhhhhhhhhhhhhz  % 13. Duplicate and count elements
tttttttttttttvvvvvvvvvvvn  % 14 Duplicate and count elements
OOOOOOOOOOOOOON&           % 15 Add bunch of zeros, output size of stack
  • ได้ถึง 12 ด้วยความช่วยเหลือจาก Luis Mendo! ใช้11,23ZPเป็นความคิดของเขาพร้อมกับการเปลี่ยนแปลง3ที่มีIข้อมูลโค้ด 7
  • ได้ถึง 15 ด้วยความช่วยเหลือเพิ่มเติมจากหลุยส์ OO...N&เป็นความคิดของเขา

เพิ่มเติมที่จะมา ฉันไม่ทราบว่าฟังก์ชั่น MATL ด้วยใจดังนั้นฉันจึงต้องกลับไปกลับมาในเอกสารประกอบ ... :)

ลองออนไลน์!


Ooh, 5Yyเป็นสิ่งที่ดี! ฉันใช้Yใน 3 เพื่อรับนายกที่สอง :(
Stewie Griffin

OOOOOOON&ฉันคิดว่าคุณจะได้รับอีกคนหนึ่งด้วย หากคุณเพิ่มคนอื่นสิ่งนี้น่าจะเป็นครั้งสุดท้ายเพราะ&
หลุยส์เมนโด

ขอบคุณอีกครั้งหลุยส์! นอกจากนี้ฉันไม่ต้องการจำนวนมากเหมือนว่าทำไมyyyyyyyy...? ฉันต้องคูณสอง 24 yเพื่อให้มันซ้ำซ้อน 12 ครั้ง ...
Stewie Griffin

@Stewie dฉันคิดว่ามันเป็นเพราะครึ่งหนึ่งองค์ประกอบที่คุณกำลังทำซ้ำเป็นอาร์เรย์ที่ว่างเปล่าที่สร้างขึ้นโดย ฉันใช้มือถืออยู่ตอนนี้ แต่ลองX#debug-print stack
Luis Mendo


2

เยลลี่ , 253 ไบต์, คะแนน 250

L}“L

ตัวอย่างข้อมูล 1 อักขระที่ตามมา:

¡¢£¤¥¦©¬®µ½¿€ÆÇÐÑ×ØŒÞßæçðıȷñ÷øœþ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|~¶°¹²³⁴⁵⁶⁷⁸⁹⁺⁻⁼⁽⁾ƁƇƊƑƓƘⱮƝƤƬƲȤɓƈɗƒɠɦƙɱɲƥʠɼʂƭʋȥẠḄḌẸḤỊḲḶṂṆỌṚṢṬỤṾẈỴẒȦḂĊḊĖḞĠḢİĿṀṄȮṖṘṠṪẆẊẎŻạḅḍẹḥịḳḷṃṇọṛṣṭụṿẉỵẓȧḃċḋėḟġḣŀṁṅȯṗṙṡṫẇẋẏż

หมายเหตุ: อาจถูกแทนที่ด้วย\nมันเป็นไบต์เดียวกันใน codepage ของ Jelly

หลังจากที่คุณผนวกตัวอย่างเหล่านั้นทั้งหมดแล้วคุณสามารถผนวก 2 ”‘ถ่านเศษเล็กเศษน้อย

+1 ขอบคุณที่เดนนิส

ลองออนไลน์!


2

Lenguage 1 112 064 ตัวอย่าง

n THข้อมูลโค้ดประกอบด้วย2 3n-1การเกิดซ้ำของn THอักขระที่ไม่ใช่ตัวแทนขึ้นและรวมถึง1 112 064 THและตัวอักษรที่ไม่ใช่ตัวแทนสุดท้ายของมาตรฐาน Unicode ปัจจุบัน

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

สำหรับn = 1เราได้รับ4ซ้ำของU + 0000 นี่เทียบเท่ากับโปรแกรม brainfuck .ซึ่งพิมพ์หนึ่งไบต์ว่าง

สำหรับn = 2เราได้รับ32ซ้ำของU + 0001รวม36ตัวอักษร นี่เทียบเท่ากับโปรแกรม brainfuck ..ซึ่งพิมพ์สองไบต์ว่าง

สำหรับn = 3เราได้รับ256ซ้ำของU + 0002รวมเป็น292ตัวอักษร นี่เทียบเท่ากับโปรแกรม brainfuck ...ซึ่งพิมพ์สามไบต์ว่าง

และอื่น ๆ ขึ้นอยู่กับn = 1 112 064


คุณสามารถแสดงหรือโต้แย้งจำนวนทศนิยมได้หรือไม่? ฉันไม่แน่ใจเกี่ยวกับฉันทามติเกี่ยวกับผลลัพธ์ที่เป็นเอกภาพ แต่ฉันเชื่อว่าเป็นเพราะภาษาที่ไม่มีแนวคิดเรื่องทศนิยม - อย่างน้อยที่สุดฉันก็ตรวจสอบครั้งสุดท้าย
Conor O'Brien

ฉันเชื่อว่ามันสำหรับภาษาที่ไม่มีแนวคิดเรื่องทศนิยมใช่และเนื่องจาก Lenguage ไม่มีทศนิยม I / O ฉันจึงถือว่ามันใช้ได้ อย่างไรก็ตามการเข้ารหัสโปรแกรม brainfuck '+'*(48 + d) +'.>'สำหรับแต่ละหลักทศนิยมของnจะได้คะแนนเท่ากัน มันยากมากที่จะอธิบาย
เดนนิส

ฉันเห็น. สิ่งเดียวกันอีกต่อไป
Conor O'Brien

2

พื้นฐาน (ZX Spectrum), คะแนน 244 (คะแนนใหม่ 247) [เป็นการโกงนี้หรือไม่?]

ตัวอย่าง 1:

2356 PRINT PEEK (PEEK 23635+256*PEEK 23636+2)+256*PEEK (PEEK 23635+256*PEEK 23636+3)-56-66

ตัวอย่าง 2: :

ตัวอย่าง 3: REM

ตัวอย่าง 4-244: ตัวอย่างอักขระเดี่ยวโดยใช้อักขระทั้งหมดที่ไม่อยู่ในตัวอย่าง 1, 2 และ 3

คำอธิบาย

ตัวละคร

บน Spectrum PRINTเป็นอักขระเดียว (รหัส 245) ตัวอย่างที่ 1 การใช้งานที่แตกต่างกัน 11 ตัวอักษร: 2, 3, 5, 6, +, -, *, (, ), PRINTและPEEKสิ่งที่คุณเห็นเป็นช่องว่างที่เป็นส่วนหนึ่งของตัวละครPRINTและPEEKเพื่อให้พื้นที่ที่ตัวเองยังไม่ได้ถูกนำมาใช้ ฉันตัดสินใจที่จะให้หมายเลขบรรทัด 2356 เพราะตัวเลขเหล่านี้เป็นเพียงตัวเลขหลักในรหัส

ไม่อนุญาตให้ใช้อักขระ 13 และ 14 นั่นหมายความว่ายังมีอักขระ 243 ตัวที่เหลืออยู่สำหรับตัวอย่าง 2-244 เริ่มต้นด้วย:และREMเพื่อหลีกเลี่ยงรหัสที่จะทำให้เกิดข้อผิดพลาดหรือทำสิ่งอื่น

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

นี่คือเหตุผลที่ฉันไม่แน่ใจว่าคำตอบนี้เกิดจากหนังสือหรือไม่

23635 เป็นตำแหน่งหน่วยความจำสำหรับระบบตัวแปร 16 บิต PROG ซึ่งจัดเก็บเป็น LH (ค่าปกติคือ 23755 แต่นอกเหนือจากผลลัพธ์ที่ไม่ถูกต้องหากไม่เป็นเช่นนั้นให้ใช้หมายเลขนี้โดยตรงแม้ว่าจะทำให้รหัสสั้นลงจะทำให้ฉันต้องใช้อักขระพิเศษเป็นหลัก) ค่าของ PROG คือตำแหน่งหน่วยความจำ ที่เก็บโปรแกรมเอง สองไบต์แรกคือหมายเลขบรรทัดที่เก็บไว้เป็น HL สองไบต์ต่อไปนี้คือความยาวของบรรทัดที่เก็บเป็น LH นั่นคือวิธีที่โปรแกรมค้นหาความยาวของเส้นของตัวเองดังนั้นจึงจำเป็นต้องลบสิ่งที่เหมาะสม

การบันทึกอักขระ

เมื่อพิจารณาถึงวิธีการจัดเก็บตัวเลขบรรทัดอาจลงท้ายด้วย -114 ดังนั้นตัวอย่าง 1 จะสร้าง 1 แต่ฉันไม่ต้องการใช้ตัวเลขพิเศษดังนั้นฉันจึงเอาตัวเลข 2 หลักสองตัวออกไปซึ่งจะต้องเพิ่ม ถึง 122; 56 และ 66 ทำได้ดีมาก

รหัสนี้ดูน่าเกลียดด้วยการซ้อนและคำนวณมูลค่าของ PROG ( PEEK 23635+256*PEEK 23636) สองครั้ง แต่ถ้าฉันเก็บไว้แล้วใช้ค่าที่เก็บไว้มันจะมีราคาเพิ่มตัวอักษร / ตัวอย่าง - บรรทัดอาจเริ่มต้นได้

2356 LET p=PEEK 23635+256*PEEK 23636: PRINT PEEK (s+2)...

ซึ่งจะใช้ 4 ตัวอักษรเพิ่มเติม: LET, p, และ=:

บางทีฉันจะสร้างมันขึ้นมาเพื่อให้ตัวเลขทั้งหมดคำนวณจากตัวเลขที่ใช้เพียง 1 หลักและรับ 3 snippets

แก้ไข:

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

1111 PRINT +PEEK (PEEK (11111+11
111+1111+(1+1+1)*(111-11)+1+1)+(
111+111+11+11+11+1)*PEEK (11111+
11111+1111+(1+1+1)*(111+1-11))+1
+1)+(111+111+11+11+11+1)*PEEK (P
EEK (11111+11111+1111+(1+1+1)*(1
11-11)+1+1)+(111+111+11+11+11+1)
*PEEK (11111+11111+1111+(1+1+1)*
(111+1-11))+1+1+1)-111-111-111-1
11-111-111

ฉันจะได้รับข้อมูลโค้ดอื่นโดยการหลีกเลี่ยงและเพียงแค่ให้ทำอย่างไรกับ+ -ฉันจะไม่ลองมันเป็นการทดสอบที่มากพอ


2

ไคลน์ 011 , 9 ตัวอย่าง

ตัวอย่าง 1

!@1!aaaaaaaaaaaaaaaaaaaaa/a

ลองออนไลน์!

ตัวอย่าง 2

2((2|bbb0b2bbbb4bbbbbbbb

ลองออนไลน์!

ตัวอย่าง 3


c\*3ccccccccccccccccccccc\ccccccccc3c6cccc9
c\

ลองออนไลน์!

ตัวอย่าง 4

ddddddddddddddddddddddd>$d:d:++-$:+:+++$:?:-$-+++

ลองออนไลน์!

ตัวอย่าง 5

ee

ลองออนไลน์!

ตัวอย่าง 6

fff

ลองออนไลน์!

ตัวอย่าง 7

ggggg

ลองออนไลน์!

ตัวอย่าง 8

hh

ลองออนไลน์!

ตัวอย่าง 9

iiiii

ลองออนไลน์!

คำอธิบาย

นี่เป็นความท้าทายที่สนุกมากสำหรับไคลน์ โทโพโลยีที่เป็นเอกลักษณ์ของไคลน์ช่วยให้สิ่งที่น่าสนใจมากมายสามารถทำได้ ในขณะที่คุณอาจสังเกตเห็นคำตอบที่ 5-9 เป็นเพียงการเพิ่มฟิลเลอร์ (ตัวอักษรไม่ได้ทำอะไรในไคลน์ดังนั้นฉันจึงใช้พวกเขาเป็นฟิลเลอร์) ในรหัสเพื่อขยายขอบเขตกล่อง สิ่งนี้ทำให้ ip ใช้เส้นทางที่แตกต่างผ่านส่วนต่าง ๆ ของรหัสก่อนหน้านี้เนื่องจากโทโพโลยีเฉพาะของ Klein

ฉันจะให้คำอธิบายแบบเต็มในภายหลัง แต่สำหรับตอนนี้ที่นี่เป็นเวอร์ชันที่เข้าใจง่ายกว่าของโปรแกรมด้วยตัวอักษรทั้งหมดแทนที่ด้วย.s

!@1!...................../.2((2|...0.2....4........
.\*3.....................\.........3.6....9
.\.......................>$.:.:++-$:+:+++$:?:-$-+++.................

ลองออนไลน์!


2

> <> , คะแนน: Infinity 1,112,064-6 = 1,112,058

ตัวอย่าง 1 (6 ไบต์)

"l4-n;

ตัวอย่างนี้ส่งออกจำนวนตัวอักษรหลังจาก; บวกหนึ่ง. สิ่งนี้สามารถขยายไปเป็นตัวอย่างขนาดใหญ่ของอักขระหนึ่งตัวในแต่ละอนันต์ Google ด่วนบอกฉันว่ามีตัวอักษร Unicode ที่เป็นไปได้ 1,112,064 ตัวลบด้วย 6 ตัวที่ฉันเคยใช้ไปแล้ว

ลอง มัน ออนไลน์


1

R , คะแนน: 79

ให้เครดิตกับคำตอบ Perl ของฌอนสำหรับแรงบันดาลใจ; การกระทำเช่นนี้เป็นการละเมิดข้อ จำกัด บางประการของล่าม R

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

nchar(scan(,""))
a

ตัวอย่างที่ตามมาคือตัวอักษรใน:

bdefgijklmopqtuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789`~!@$%^&*_+|\[]{}:?><;

ลองออนไลน์!

scanฟังก์ชั่นอ่านข้อมูลจากไฟล์ที่เริ่มต้นที่""stdin()

เอกสารสำหรับstdin()ระบุว่า:

เมื่อ R กำลังอ่านสคริปต์จากไฟล์ไฟล์คือ 'คอนโซล': เป็นการใช้แบบดั้งเดิมเพื่ออนุญาตข้อมูลในบรรทัด (ดู 'An Introduction to R' สำหรับตัวอย่าง)

ดังนั้นข้อมูลที่ตามมาจะกลายเป็นไฟล์ สิ่งนี้สามารถขยายได้เล็กน้อยและสามารถทำงานกับการเข้ารหัสที่แตกต่างกันหลายอย่าง


1

Pyke 256 ไบต์คะแนน 254

โปรดทราบว่ารหัสเหล่านี้เป็นรหัสเลขฐานสิบหกของไบต์จริงคั่นด้วยช่องว่างเนื่องจากมีค่า null เป็น ( \x00) รวมอยู่ด้วย

ตัวอย่างข้อมูลเริ่มต้น:

6C 22 00

ตัวอย่างข้อมูล 1 อักขระที่ตามมา:

01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 50 51 52 53 54 55 56 57 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 C6 C7 C8 C9 CA CB CC CD CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF

ลองที่นี่!


1

Java 8, 7 ตัวอย่าง (19 ไบต์)

1
*2
-~0
>4?4:4
|5
^3
7%7

เพียงแค่เริ่มต้นจะทำงานต่อไป

ลองที่นี่

คำอธิบาย:

ลำดับความสำคัญในการดำเนินการอาจชัดเจนขึ้นเมื่อฉันเพิ่มวงเล็บ:

((1*2)-~0)>4?4:4|(5^(37%7))
  • a*b: คูณaด้วยb
  • ~a: -a-1
  • a>b?x:y: if(a>b){ x }else{ y }
  • a|b: Bitwise-OR aด้วยb
  • a^b: Bitwise-XOR aด้วยb
  • a%b: amodulo-b

1

Python 2 , 110 ตัวอย่าง

นี่คือตัวอย่างที่สมบูรณ์:

print((((len(open(__file__).read())-44.))))

#	 !"$%&'*+,/012356789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^`bcghjkmqsuvwxyz{|}~

ลองออนไลน์!

ตัวอย่างแรกคือ

print((((len(open(__file__).read())-44.))))

จากนั้นสนิปเพต 109 ถัดไปคือ 109 ไบต์ถัดไป

นี่คือ "cheaty" ที่สวยเพราะ Lynn ใส่ไว้ ตัวอย่างแรกจะเปิดไฟล์และลบ 44 จากความยาวจากนั้นข้อมูลโค้ดแต่ละอันจะรวม 1 กับความยาวของไฟล์โดยไม่เปลี่ยนตรรกะของโปรแกรมโดยรวม ซึ่งจะเป็นการเพิ่มผลลัพธ์ของเอาต์พุตโดย 1


1

dc , คะแนน 13, 58 ไบต์

I3%                   #I is the default input radix, 10, mod 3 yields 1
1+                    #Add one
2^2^2^Z               #2^8=256, Z pushes the number of digits to the stack
6*v                   #Square root of 18 = ~4.24, at precision 0 we get 4
c5                    #Start getting lazy, clear the stack and push 5
_F-E-                 #Subtract negative 15, then subtract 14
ss7                   #Lazy, 'drop' the value by storing it, push 7
SS8                   #Lazy, 'drop' the value by storing it, push 8
d::9                  #Lazy, 'drop' the value by storing it, push 9
;;kA                  #Recall element 9 from nonexistant array ; which is zero, set precision, push A (10)
iB                    #Set input radix to 10, push B (11)
oD                    #Set output radix to 11, push D (13, or 12 in base 11)
 4CCCCCCr/4C/CC/4/    #We have division and the digits 4 and C left, this might not be the optimal way to get us to 13 but it does the job

ลองออนไลน์! (โปรดทราบว่ารุ่น TIO จะเพิ่มการfติดตามแต่ละอันเพื่อพิมพ์สแต็คทั้งหมดแสดงให้เห็นว่าแต่ละตัวอย่างการใช้งานจะทิ้งค่าเดียวไว้บนสแต็กเท่านั้นและฉันลืมพื้นที่นำหน้าในตัวอย่างสุดท้ายซึ่งไม่สำคัญในการใช้งาน แยกออกจากกันโดยการแบ่งบรรทัด แต่จะนับรวมถึงการใช้อักขระของฉัน)

การต่อข้อมูลโค้ดเพิ่มเติมแต่ละรายการจะทิ้งค่าที่ต้องการและเฉพาะค่าที่ต้องการบนสแต็ก หลังจากกดปุ่ม 12 ฉันมีวิธีที่จะกินสแต็ค ฉันพยายามที่จะใช้การคำนวณทางคณิตศาสตร์ตั้งแต่เนิ่นๆเนื่องจากพวกมันฮุบกองและเมื่อเราได้จำนวนมากขึ้น เมื่อทุกคนพูดและทำฉันมีเพียง 0 หลักที่เหลือเท่านั้นที่จะเล่นและมีน้อยมากในทางของการสแต็ค - ป๊อปดังนั้นฉันคิดว่า 13 ใกล้จะถึงจุดสูงสุดแล้ว ฉันแน่ใจว่ามีหลายวิธีที่คล้ายกัน (และน่าจะสั้นกว่า) ในการทำสิ่งนี้ให้สำเร็จใน dc สิ่งนี้เกิดขึ้นได้ โปรดทราบว่า cygwin จัดการ AF ที่ผสมกับ 0-9 แตกต่างจาก dc เวอร์ชันส่วนใหญ่44C4r/CC 4//ทำงานสำหรับตัวอย่างสุดท้ายใน cygwin


0

Pyth , 124 ตัวอย่าง

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

ลองออนไลน์!

อักขระที่ไม่สามารถพิมพ์ได้ซึ่งหนีออกมาโดยใช้อักขระที่พิมพ์ได้สามตัว ( x..) ตัวอย่างแรกมีความยาวสามไบต์ทุกตัวอย่างหลังจากนั้นจะมีความยาวเพิ่มขึ้นทีละหนึ่ง


0

Beatnik , 22 ไบต์, คะแนน 20

K A
E
I
L
N
O
R
S
T
U
a
e
i
l
n
o
r
s
t
u

สมมติว่าคำว่า "ตัวอย่าง" ช่วยให้คุณสามารถผลักดันค่าในกอง


0

อ็อกเทฟคะแนน 86

nnz n

ติดตามโดย:

!$&()*+./0123456789:<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmopqrstuvwxy{|}~

วิธีนี้ใช้ประโยชน์จากข้อเท็จจริงที่ว่าอ็อกเทฟปฏิบัติต่อทุกสิ่งหลังจากชื่อฟังก์ชันเป็นอินพุตสตริง ดังนั้นส่งกลับจำนวนของที่ไม่ใช่ศูนย์องค์ประกอบในสตริงnnz n 'n'เราไปถึง 86 ด้วยการเพิ่มอักขระ ASCII ที่พิมพ์ได้อื่น ๆ ',"%#ไม่ทำงาน



0

Julia 0.6, 111217

สคริปต์ต่อไปนี้สร้างโปรแกรมแบบเต็ม:

A = "macro length(a);length(string(a))end;@length a"
B0 = join(([Char(x) for x in Iterators.flatten((0x000001:0x00d7ff, 0x00e000:0x10ffff)) if Base.isvalid(Char(x)) && Char(x) ∉ A && Base.isidentifier("a$(Char(x))") ]));
B = normalize_string(B0, stripmark=true, decompose=true);
B = join(unique(b for b in B))
while (n = search(B, '·')) > 0
    B = B[1:prevind(B,n)]*B[nextind(B,n):end]
end
while (n = search(B, '`')) > 0
    B = B[1:prevind(B,n)]*B[nextind(B,n):end]
end

open("concount.jl", "w") do f
    write(f, A)
    write(f, B)
end

คำอธิบาย

มาโคร

 macro length(a);length(string(a))
 end
 @length a

ตามมาด้วยทุกตัวอักษร Unicode isidentifierที่แตกต่างกันได้รับอนุญาตในตัวบ่งชี้คำนวณด้วย เครื่องหมาย diacritial บางอันทำให้ฉันสับสน


0

TeX คะแนน 61 (อาจ 190)

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

\def\len#1{\expandafter\glen\string#1=}
\def\glen#1{\tlen}
\def\tlen#1{\if#1=\let\tlen\end\number\count1\else\advance\count1by1\fi\tlen}
\count1=-1
\catcode33=11
\catcode34=11
\catcode36=11
\catcode37=11
\catcode'46=11
\catcode40=11
\catcode41=11
\catcode42=11
\catcode43=11
\catcode44=11
\catcode45=11
\catcode46=11
\catcode47=11
\catcode56=11
\catcode57=11
\catcode'72=11
\catcode'73=11
\catcode60=11
\catcode62=11
\catcode63=11
\catcode64=11
\catcode'133=11
\catcode'135=11
\catcode'136=11
\catcode'137=11
\catcode'140=11
\catcode124=11
\catcode126=11
\len\t

อีก 60 ตัวอย่าง: ในลำดับใด ๆ แต่ละอันมีอักขระหนึ่งตัวจาก

!"$%&()*+,-./:;<>?@[]^_`|~89ABCDEFGHIJKLMNOPQRSTUVWXYZhjkqwz

คำอธิบาย: \lenซึ่งถูกเรียกใช้ในตอนท้ายแปลงลำดับการควบคุมเป็นสตริงอักขระแต่ละตัว (รวมถึง\) เป็นโทเค็นหนึ่งตัวของสตริงนั้น แล้ว\glengobbles โทเค็น\แล้ว\tlenนับเหลือราชสกุล ดังนั้นจึงส่งออกความยาวของลำดับการควบคุมนั้น (ไม่รวม\)

ตัวละครจากตัวอย่างอื่น ๆ \tขยายลำดับควบคุมซึ่งเป็นครั้งแรกเพียง ลำดับการควบคุมแบบหลายตัวอักษรจะต้องประกอบด้วยตัวอักษรเท่านั้น แต่พวกเขาทั้งหมดนับเป็นตัวอักษรเพราะพวกเขาทั้งหมดได้รับรหัสหมวดหมู่ที่ 11 (ใช้รหัส ASCII เพื่อให้ตัวอักษรตัวเองไม่ปรากฏในตัวอย่างแรก)

ฉันตัดสินใจที่จะใช้รหัสฐานแปดสำหรับตัวละครบางตัวซึ่งมีค่าฉันหนึ่งสัญลักษณ์'แต่ช่วยฉันด้วยตัวเลขสองหลัก 8 และ 9 ดังนั้นฉันจึงได้รับตัวอย่างหนึ่ง \expandafterอาจจะได้รับคู่มากขึ้นถ้าฉันไม่จำเป็นต้อง

เอาท์พุต

การเปลี่ยนแปลงที่เป็นไปได้: ห่อ\number\count1เข้า\message{}เพื่อการส่งออกไม่ได้ไปลงใน.dviการส่งออก .logแต่การส่งออกและคอนโซล ไม่มีค่าใช้จ่ายเพิ่มเติมใด ๆ ตัวอักษร

190

น่าเสียดายที่ TeX ทำงานร่วมกับ ASCII และไม่ใช่ Unicode (หรือใช้งานในตอนนี้ได้หรือไม่) แต่โซลูชันของฉันอาจขยายออกไปเพื่อรวมตัวอย่างข้อมูลอักขระเดี่ยว 129 รายการที่มีอักขระด้วยรหัส 127-255 อาจจะมีตัวละครบางตัวก่อน 32 ตัวอักษร 32 (ช่องว่าง) ไม่ทำงานมิฉะนั้นฉันจะใส่มันในตัวอย่างเช่นกัน - ไม่ต้องการมันในตัวอย่างแรก แน่นอนว่าอักขระเพิ่มเติมแต่ละตัวเหล่านี้จะต้อง\catcodeใส่ลงในตัวอักษรในตัวอย่างแรก


0

Pip, 57 ไบต์, คะแนน = 16

!u
2
RT9
#m
5
(EX3Y8)
7
y
A'<tab>
t
11
+o
-v
PI@`\...`@`..$`
"F"FB:4*4
Ok=k6

โปรดทราบว่า<tab>หมายถึงอักขระแท็บตัวอักษร (ASCII 9) ลองออนไลน์!

แต่ละตัวอย่างเป็นโปรแกรมเต็มรูปแบบที่ส่งออกจำนวนที่ต้องการ งานส่วนใหญ่ของพวกเขาบนหลักการที่ว่าการแสดงออกสุดท้ายในโปรแกรม Pip เป็น autoprinted: ยกตัวอย่างเช่นในตัวอย่าง 5 รหัสก่อนหน้านี้มีการประเมิน 5แต่เพียงส่วนหนึ่งที่เป็นเรื่อง ข้อยกเว้นนี้คือ:

  • ตัวอย่าง 3 ทำงานได้ดีในการแยกเป็นRT9(รากที่สองของ 9) แต่มาหลังจากตัวอย่างที่ 2 มันแยกวิเคราะห์เป็นจริง2RT9(2 รากของ 9) - ซึ่งแน่นอนจำนวนในสิ่งเดียวกัน
  • ตัวอย่าง 6 ได้รับอักขระที่ 8 (ดัชนี 0) ของ e ^ 3 ซึ่งเกิดขึ้นเป็น 6 แต่มันยังดึงตัวเลข 8 ลงในyตัวแปรด้วย Snippet 8 yแล้วเอาท์พุทค่าของ
  • ตัวอย่าง 12 ใช้เวลา 11 จากตัวอย่างก่อนหน้านี้และเพิ่มo(กำหนดค่าเริ่มต้นเป็น 1) Snippet 13 ใช้เวลาที่ผลและลบv(preinitialized -1)
  • ตัวอย่างข้อมูล 16 เอาท์พุท1โดยไม่ต้องขึ้นบรรทัดใหม่ ( Ok=kซึ่งk=kประเมินค่าความจริงเริ่มต้นที่ 1) แล้วพิมพ์6อัตโนมัติ

สิ่งที่น่าสนใจอื่น ๆ :

  • ตัวอย่างที่ 14 ใช้การดำเนินการ regex เพื่อแยก14จากค่าของ pi
  • ตัวอย่าง 15 แปลงสตริง"F"จากเลขฐานสิบหก

0

Zsh , คะแนน> 50 000 (1 112 046?), 16 + Σ (UTF-8 ความยาว codepoint) ไบต์

exec echo   $((${#:-$(<$0)}-33))
#

Zsh จัดการการเข้ารหัสหลายไบต์โดยค่าเริ่มต้น ตัวอย่างพื้นฐานมีอักขระที่ไม่ซ้ำกัน 18 ตัวรวม 34 ตัว codepoint อื่น ๆ (บันทึกสำหรับไบต์ว่าง) สามารถเพิ่มลงในนี้ ขณะที่ฉันเขียนสิ่งนี้สคริปต์ของฉันทดสอบสิ่งเหล่านี้คือ codepoint ~ 50 000 ขนาดไฟล์ทั้งหมด 150K ไปที่ประมาณ 30 snippets / วินาที เรียกใช้สคริปต์ทดสอบเต็มรูปแบบของฉันเองที่นี่ คุณอาจต้องการที่จะปรับมันเพื่อเริ่มในภายหลัง codepoints ในภายหลัง

ลองตัวอย่างข้อมูลออนไลน์ 2,000 รายการแรก!

ตัวอย่างเพิ่มเติมมีความเป็นไปได้โดยใช้เทคนิคนี้

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