พิมพ์อัตราส่วนทองคำ


26

สนุกมาก! อย่างไรก็ตามด้วยตัวเลขสามหลักความสนุกก็จบลงเร็วเกินไป ความท้าทายนี้คล้ายกัน แต่เราจะดำเนินต่อไปอย่างสนุกสนาน

ความท้าทาย

พิมพ์ตัวเลขทองคำอัตราส่วน φให้ได้มากที่สุด อัตราส่วนทองคำถูกกำหนดให้เป็นตัวเลขที่ตอบสนองφ = (φ + 1) / φและให้ 100 หลักแรกโดย:

1,6180339887498948482045868343656381177203091798057628621354486227052604628189024497072072041893911375 ...

ความท้าทายนี้ไม่ได้เกี่ยวกับการคำนวณφ! มันเกี่ยวกับการพิมพ์ตัวเลขให้ได้มากที่สุดโดยไม่ต้องใช้วิธีการใด ๆ ในการทำสองครั้ง ดังนั้นหาวิธีที่สร้างสรรค์เพื่อรับตัวเลขของคุณมากที่สุด!

ข้อ จำกัด

ด้วยตัวเองการพิมพ์ตัวเลขของφอาจจะง่ายเกินไปดังนั้นนี่คือกฎ:

  1. คุณต้องสร้างตัวเลขตามลำดับจากซ้ายไปขวาไม่ว่าจะเป็นการพิมพ์ทีละชิ้นหรือโดยการสร้างสตริงจากซ้ายไปขวาและพิมพ์ในตอนท้าย - คุณสามารถสร้างอาเรย์ของตัวละครหลักแล้วเข้าร่วมและ พิมพ์มันตราบใดที่คุณทำตามลำดับ ในกฎต่อไปนี้ "print" และ "output" อาจอ้างถึงกระบวนการใด ๆ เหล่านั้น (เช่นหากคุณกำลังสร้างสตริงและสตริง1.6นั้นมีจำนวนที่นับว่า1.6พิมพ์แล้ว)
  2. สำหรับรหัสของคุณคุณจะได้รับงบประมาณจำนวน15 ตัวอักษรต่อหลัก ระยะเวลาไม่นับรวมกับงบประมาณนั้น แต่จะต้องพิมพ์เช่นกัน โปรดทราบว่าข้อ จำกัด นั้นมีเพียงขนาดรหัสทั้งหมด: คุณสามารถใช้ตัวเลขได้มากกว่า 15 ตัวสำหรับตัวเลขใดก็ได้ตราบใดที่คุณไม่ได้ใช้โดยเฉลี่ยมากขึ้น ในความเป็นจริงคุณอาจสร้าง "หนี้สิน" เป็นตัวอักษรและ "ชำระคืน" ในภายหลัง เช่นการพิมพ์1.618คุณมี60ตัวอักษร
  3. การรวม / นำเข้าไลบรารีมาตรฐานไม่นับรวมกับขนาดรหัส แต่คุณไม่สามารถให้ชื่อแทนชวเลขได้ฟรี!
  4. คุณต้องไม่ใช้ตัวเลขที่คุณกำลังสร้างอยู่หรือสิ่งใดก็ตามที่คุณพิมพ์ไปแล้ว เช่น1อาจปรากฏอยู่ในที่ใดก็ได้ในซอร์สโค้ดของคุณเนื่องจากเป็นเลขตัวแรก รหัสที่ออกผลลัพธ์เป็น8ใน1.618อาจจะใช้ใดหรือทั้งหมดของตัวเลขแต่ไม่มี[0234579] [168]เพื่อจุดประสงค์นี้ตัวอักษรทั้งหมดที่เทียบเท่ากับตัวเลขหนึ่งหลักจะถือว่าเป็นตัวเลขนั้น ดังนั้นหากภาษาของคุณสามารถแทนได้9เนื่องจาก'\t'คุณไม่ได้รับอนุญาตให้ใช้สิ่งนั้นทุกที่ที่คุณไม่สามารถใช้9แทนได้
  5. คุณต้องไม่สร้างตัวเลขหลายหลักพร้อมกัน มันควรจะเป็นไปได้ที่จะแยกรหัสของคุณออกเป็นชิ้น ๆ อย่างชัดเจน
  6. คุณต้องไม่อ้างถึงฟังก์ชันในตัวตัวดำเนินการทางคณิตศาสตร์ / บูลีน / บิต - ฉลาด / สตริงตัวแปรหรือค่าคงที่ซึ่งคุณใช้ในรหัสที่สร้างตัวเลขก่อนหน้านี้ ข้อยกเว้นคือการแปลงจำนวนเต็มเป็นสตริงฟังก์ชันเชื่อมต่อสตริงและฟังก์ชันการพิมพ์ซึ่งคุณอาจต้องใช้กับทุกหลักเดียว โปรดทราบว่าไม่สำคัญว่าชื่อใดที่คุณอ้างถึงในตัว: เพียงเพราะคุณใช้นามแฝงในตัวPIทั้งสองpและqไม่ได้หมายความว่าคุณจะต้องใช้งานpครั้งqเดียว เช่นเดียวกันคุณจะได้รับอนุญาตให้ใช้ชื่อสองครั้งถ้ามันหมายถึงแตกต่างกันสองตัว -ins เช่นสตริงและอาเรย์lengthlength

    หากภาษาการเขียนโปรแกรมของคุณไม่มีฟังก์ชั่นให้ใช้วิจารณญาณที่ดีที่สุดของคุณในสิ่งที่เทียบเท่า - สำหรับการใช้สคริปต์ทุบตีการเรียกใช้โปรแกรมอื่นควรทำตามกฎที่กำหนดไว้ในฟังก์ชั่น

  7. การส่งของคุณจะต้องเขียนในภาษาเดียว ดังนั้นไม่ต้องดำเนินการล่ามของภาษาอื่นเพื่อให้สามารถเข้าถึงบิวด์อินของภาษานั้นได้เช่นกัน

ผลกระทบ

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

  • คุณไม่ได้รับอนุญาตให้เขียนทับส่วนต่าง ๆ ของผลลัพธ์โดยพิมพ์ backspaces (ปกติ'\b') ระหว่างนั้น
  • ลูปที่สร้าง / ส่งออกหลายหลักเป็นสิ่งต้องห้าม (ลูปที่คำนวณตัวเลขหลักเดียวนั้นใช้ได้)
  • (1 + √5)/2ห้ามใช้เวอร์ชั่นที่ซับซ้อนหรือแบ่งตัวเลขฟีโบนักชีเพื่อให้ได้ตัวเลขมากกว่าหนึ่งหลัก
  • คุณไม่สามารถคำนวณล่วงหน้า 10 หลักและเก็บไว้ใน 10 ตัวแปรแล้วเพียงอ้างถึงเพราะการอ้างอิงตัวแปรเหล่านั้นไม่ได้สร้างตัวเลข - รหัสที่เติมตัวแปรทำดังนั้นนี่เป็นการละเมิดกฎ 6
  • ในความเป็นจริงคุณจะไม่สามารถนำมาใช้ใหม่ (ผลหรือกลาง) ก่อน ๆ เพราะนั่นจะหมายถึงตัวเลขสองหลักจะแบ่งสำหรับที่ถูกสร้างขึ้น
  • มิฉะนั้นคุณสามารถใช้วิธีการใด ๆ (ซึ่งไม่จำเป็นต้องใช้คณิตศาสตร์อย่างเดียว) เพื่อสร้างตัวเลข (และคุณควรจะ!)
  • ในความเป็นจริงไม่จำเป็นต้องคำนวณอะไรเลยถ้าคุณสามารถดึงตัวเลขที่ถูกต้องจากหลาย ๆ ที่โดยใช้ห้องสมุดมาตรฐานของคุณ
  • คุณอาจใช้โอเปอเรเตอร์หลายครั้งในขณะที่สร้างตัวเลขหลักเดียวดังนั้นจึง2+2+2เป็นเกมที่ยุติธรรมที่จะสร้างตัวแรก6(แม้ว่าจะไม่น่าจะสั้นที่สุด)
  • คุณสามารถใช้ตัวอักษรใด ๆ ได้บ่อยเท่าที่คุณต้องการเพราะมันไม่ได้เป็นค่าคงที่ในตัว ดังนั้นตราบใดที่คุณไม่จำเป็นต้องพิมพ์5คุณสามารถ5ใส่รหัสลงไปได้มากเท่าที่คุณต้องการ
  • คุณไม่สามารถฮาร์โค้ดเอาท์พุทได้เนื่องจากจะเกี่ยวข้องกับการใช้ตัวเลขที่คุณกำลังส่งออก

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

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

เกณฑ์การให้คะแนน

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

โปรดเพิ่มรุ่นที่มีการคอมเม้นต์ที่ระบุว่าส่วนใดของรหัสของคุณที่สร้างตัวเลข

PS: ถ้าใครเต้น 100 ตัวเลขข้างต้นที่นี่มีบางมากขึ้น


ลบความคิดเห็นแล้ว โปรดแจ้งให้ฉันทราบหากมีข้อมูลสูญหาย
Doorknob

"ใช้รุ่นที่สับสน ... "นั่นเป็นเพียงการใช้สูตรสมการกำลังสองบนx = (x+1)/x(หรือx^2 = x+1) (หรือx^2-x+1)
โคลจอห์นสัน

.... ฉันสามารถอ้างถึงโอเปอเรเตอร์ที่กำหนดใช้งานได้มากกว่าหนึ่งครั้ง
Stackstuck

นอกจากนี้ฉันสามารถนำการบ้านไปใช้ซ้ำได้หรือไม่?
Stackstuck

คำตอบ:


18

PHP, 100 หลัก

ฉันอาจงอกฎเล็กน้อยที่นี่ แต่ PHP มีค่าคงที่หลายสิบให้เลือก:

<?php
echo TRUE . '.' . PM_STR . DNS_A . MSG_EOR . LC_ALL . T_FMT . LOCK_UN . SQL_DATE
. E_NOTICE . IMG_WBMP . INI_ALL . E_PARSE . SOCKET_EBADF . LOG_USER .
IMAGETYPE_JPC . IMG_PNG . GLOB_MARK . LOCK_NB . LOG_NDELAY . D_FMT . PHP_ZTS .
GLOB_ERR . AM_STR . SQL_DOUBLE . SOL_TCP . FILE_APPEND . LOG_ERR . SORT_ASC .
SOCK_RAW . LOG_INFO . LC_TIME . SQL_FLOAT . SORT_DESC . INFO_MODULES . E_ERROR .
IMG_GIF . SQL_REAL . LOG_DEBUG . DNS_NS . CODESET . CAL_FRENCH . CURLE_OK .
LDAP_OPT_RESTART . LOCK_SH . XML_PI_NODE . SQLITE_INTERRUPT . MYSQLI_ASYNC .
CURLM_OK . SNMP_NULL . SQLITE_NOMEM . LC_MESSAGES . IMG_JPG . SO_KEEPALIVE .
SOCKET_ENXIO . LOCK_EX . D_T_FMT . ENT_QUOTES . LOG_NOTICE . SOCK_RDM .
INPUT_ENV . CURLAUTH_NTLM . INPUT_SESSION . AF_INET . IMG_JPEG . SQL_CONCURRENCY
. SEEK_SET . SOCKET_EIO . LC_CTYPE . PHP_URL_QUERY . LOG_KERN . INI_SYSTEM .
IMAGETYPE_BMP . SEEK_END . JSON_HEX_QUOT . LOG_PID . LIBXML_DTDATTR .
XML_DOCUMENT_NODE . PHP_DEBUG . LOG_CRIT . ENT_IGNORE . LC_NUMERIC .
DOM_NOT_SUPPORTED_ERR . PHP_URL_FRAGMENT . FILE_TEXT . IMAGETYPE_TIFF_II .
LOG_CONS . LOG_EMERG . UPLOAD_ERR_CANT_WRITE . MSG_PEEK . SQLITE_OK . FNM_PERIOD
. AF_UNIX . CURLPROTO_FTPS . STREAM_NOTIFY_FAILURE . MYSQL_BOTH .
CURLE_FTP_ACCESS_DENIED . MSG_OOB . FTP_TEXT . LC_MONETARY .
CURLE_COULDNT_CONNECT . SQLITE_BUSY . "\n";

นี่อาจเป็นรหัสที่ไม่พกพาได้ แต่มันใช้ได้ดีกับระบบของฉัน นี่คือรหัสที่สร้างมัน:

<?php
$phi = "6180339887498948482045868343656381177203091798057628621354486227052604628189024497072072041893911375";
echo "<?php\necho TRUE . '.' . ";
$consts = get_defined_constants();
foreach($consts as $k=>$v) if (preg_match('/\d|TRUE|PHP_EOL/',$k)) unset($consts[$k]);
for ($p=0;$p<strlen($phi);$p++) {
  $d = ord($phi[$p]) - 48;
  $min = 999;
  foreach($consts as $k=>$v) {
    if (strlen("$v")==1 && $v==$d && strlen($k)<$min) {
      $min = strlen($k);
      $maxk = $k;
    }
  }
  if ($min==999) break;
  echo "$maxk . ";
  unset($consts[$maxk]);
}
echo "\"\\n\";\n";

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

<?for(;;);ใช้หน่วยความจำ 9MB ตอนนี้ฉันรู้แล้วว่าทำไม ... ฉันชอบข้อ จำกัด ที่ @ kernigh กำหนดขึ้นเอง # 7 ซึ่งปิดช่องโหว่ประเภทนี้ นอกจากนี้สำหรับสิ่งที่คุ้มค่าผลลัพธ์ในระบบของฉันคือ: codepad.org/wSrtJBco
primo

แม้ว่าการเรียกใช้ตัวกำเนิดจะสร้างการแสดงผลที่ถูกต้องดังนั้น +1 สำหรับสิ่งนั้น;) เวอร์ชันที่ทำงานบนเซิร์ฟเวอร์codepad
primo

2
ยินดีด้วยคุณทำลายความท้าทาย ;) ... ไม่จริง ... คำตอบนี้ไม่ได้เป็นการท้าทายที่แท้จริง แต่มันอยู่ในกฎที่ดีที่สุดเท่าที่ฉันเห็นดังนั้นฉันจะต้องยอมรับความพ่ายแพ้และยอมรับมัน :)
Martin Ender

11

Perl - 37 หลัก

use Math::Trig;
use POSIX;

print
  !0,'.',chop$=||$=,A==A,2**3,$|,++$^F,75/5/5,pi*pi%\_,4+4,a^Y,w&'?',~"\xcb",$^=~y/_//c,
  ord"\b",unpack(h,"\t").@{[c,c,c,c]},$#{[b..j]},"$^W"|'$',$^H>>log$^H,cos()- -cos,$[,
  $-=sqrt%SIG,$%=$],$+[*$=~/($)/],split('',$~).map(glob,"{,,,}{,}"),index(\L,L),
  exp(exp)<<exp,ceil(sinh acosh$^C).keys{stat$0},rindex(\R,R),($s=ssssss)=~s/s//g,
  $?=acos(--$z),$^T=pack(u,$^T.$^T.TTTT),B~~B,C<=C,length$^V,

ปัจจุบัน 392 ไบต์ (10.6 ต่อหลัก)

เอาท์พุท:

1.618033988749894848204586834365638117

ข้อ จำกัด ที่เรียกร้องด้วยตนเอง

ฉันได้เพิ่มข้อ จำกัด เพิ่มเติมเล็กน้อยเพื่อ จำกัด การใช้คุณสมบัติภาษาที่จะทำให้เกิดปัญหาเล็กน้อย ตัวอย่างเช่นการตรวจสอบอาร์เรย์@{...}และดัชนีสุดท้ายของอาร์เรย์$#{...}จะใช้เพียงครั้งเดียว อาร์เรย์ใช้แต่ละคนจะถูกสร้างขึ้นในลักษณะที่แตกต่างกัน (เปรียบเทียบ[c,c,c,c], [b..j], split('',$~), map(glob,"{,,,}{,}")) นอกจากนี้จะไม่มีการใช้สัญลักษณ์หรือคำสั่งมากกว่าหนึ่งครั้งแม้ว่าจะได้รับอนุญาตอย่างชัดเจนในคำอธิบายการท้าทาย ฉันคิดว่ามันเป็นความคิดที่ดีสำหรับ perl (หรือภาษาใด ๆ ที่มีตัวแปรพิเศษเฉพาะ int (มีคนอื่น?)) เพราะมัน จำกัด จำนวนการแปลง int โดยนัย


ชิ้น

!0                       # returns 1
'.'
chop$=||$=               # $= is 60, chop the 0, returns 6
A==A                     # returns 1 (because 0==0)
2**3                     # returns 8
$|                       # auto flush, returns 0
++$^F                    # max system filehandle pre-incremented, returns 3
75/5/5                   # returns 3
pi*pi%\_                 # pi² mod a large value, returns 9
4+4                      # returns 8
a^Y                      # bitwise 'a' xor 'Y', returns 8
w&'?'                    # bitwise 'w' and '?', returns 7
~"\xcb"                  # bitwise inversion of char 203, returns 4
$^=~y/_//c               # count non-underscores in $^, returns 9

ord"\b"                  # returns 8
unpack(h,"\t")           # unpack "\t" as a hex nibble, returns 9
@{[c,c,c,c]}             # anonymous array, returns 4 in scalar context
$#{[b..j]}               # final index of the range b..j, returns 8
"$^W"|'$'                # bitwise '0' or '$', returns 4
$^H>>log$^H              # $^H is 256, log$^H is ~5, returns 8
cos()- -cos              # cos(undef) is 1, subtract -1, returns 2
$[                       # array start index, returns 0

$-=sqrt%SIG              # set $- to sqrt(23), returns 4
$%=$]                    # set $% to the version number, returns 5
$+[*$=~/($)/]            # match end on *$ (aka *main::$), returns 8
split('',$~)             # split "STDOUT" into chars, returns 6 in scalar context
map(glob,"{,,,}{,}")     # an array of 8 empty strings, returns 8 in scalar context
index(\L,L)              # finds 'L' in 'SCALAR(...)', returns 3

exp(exp)<<exp            # 2.718281828 << 1, returns 4
ceil(sinh acosh$^C)      # ceil(2.30129...), returns 3
keys{stat$0}             # stat$0 is an array with 13 entries, which has 6 keys when
                         # interpreted as a hash, returns 6 in scalar context
rindex(\R,R)             # finds 'R' in 'SCALAR(...)' in reverse, returns 5
($s=ssssss)=~s/s//g      # replace the every 's' in 'ssssss' with nothing, returns 6

$?=acos(--$z)            # set $? to 3.14159... implicit int conversion, returns 3
$^T=pack(u,$^T.$^T.TTTT) # set $^T to "8,30P,...", returns 8
B~~B                     # returns 1 (because B represents the same thing as B)
C<=C                     # returns 1 (because 0<=0)
length$^V                # string length of $^V, returns 7

8

Python 2.7, 19 หลัก, 231 ตัวอักษรที่เกี่ยวข้อง

from math import ceil, pi, trunc, gamma, sin

print ''.join(map(str,
[33-32,
chr(46),
~-7,
8>>3,
trunc(gamma(4.3)),
'x'.find('x'),
22/7,
range(4).pop(),
len('am I phi?'),
52%44,
2*4,
5|2,
ord('/'),
'\b',
5+2+2,
2<<2,
eval("5+2+2"),
ceil(pi),
'\b',
'\b',
str(sin(5))[5],
5&52]))

คำตอบนี้ถูกโพสต์ก่อนที่ backspace-loophole จะปิด เนื่องจากมันเป็นกลลวงที่ฉลาดและไม่เป็นอันตรายต่อความท้าทายในกรณีนี้ (และเนื่องจากนี่เป็นคำตอบที่จริง ๆ แล้วชี้ให้ฉันเห็นถึงช่องโหว่) คำตอบนี้อาจยังคงเป็นเช่นนั้น - ดังนั้นโปรดอย่าลงคะแนนตามนั้น ค่อนข้างโหวตขึ้นเพื่อความฉลาด :)
Martin Ender

6

Ruby 2.1 สำหรับ 54 หลัก, 808 ตัวอักษร

#!ruby -rdate -rdigest -ropenssl -rprime -rset -rsocket
print 2/2,?.,9-3,3&5,2*4,2^2,7%4,55>>4,5+4,2<<2,-~7,5|2,2**2,(2r+2+5).to_i,(2.2+5).ceil,(55r/5-2).floor,(2.2*2).to_i,(2r*2*2).ceil,(2.2**2).floor,2.to_bn<<2,__LINE__,$<.to_i,IO::LOCK_NB,Errno::EIO::Errno,File::APPEND,'aaaaaa'.size,?a.encoding.name.sub(/\D+/,''),%w[a a a].size,%w[a b c d].to_set.size,%w[a a a].count,Socket::AF_NS,Date.jd(Date::ITALY).wday,*Digest::MD5.digest(?j).scan(/\d/),Set[?a,?b,?c].count,SignalException.new('FPE').signo,Float::ROUNDS,begin
exit false
rescue Object
$!.status
end,Process::RLIMIT_NPROC,:aaaaaaa.size,Prime.first,?/.next,{a:p,b:p,c:p}.size,STDIN.lineno,?a.crypt('at')[/\d/],{a: :a}.find_index([:a,:a]),/b/=~'aaaaaaaaab',[?a,?b].index(?b),:aaaaaaab=~/b/,?\t.ord,'aaaaaaaab'=~/b/,open(?/).pos,'aaaaab'.index(?b),?\a.bytes{|b|break b},'aaaaaaa'.rindex(?a),%w[a a].map.size

ruby 2.1.0p0 (2013-12-25 revision 44422) [x86_64-openbsd]โปรแกรมนี้จะทำงานร่วมกับ ระบบอื่นที่ไม่ใช่ OpenBSD 5.5 อาจมีค่าแตกต่างกันสำหรับตัวเลขสองสามหลัก

การตีความ

ข้อ จำกัด ของความท้าทายนี้โดยเฉพาะอย่างยิ่งข้อ จำกัด 6 ไม่แม่นยำสำหรับ Ruby ดังนั้นฉันจึงเพิ่มการตีความของตัวเอง:

  1. วงเล็บจุดและโคลอนคู่ไม่ใช่ตัวดำเนินการ วงเล็บเพิ่งเปลี่ยนลำดับของการดำเนินการ จุดเรียกวิธีการเช่นเดียวกับในและลำไส้ใหญ่คู่ได้รับค่าคงที่ในขณะที่$<.fileno IO::LOCK_NBชื่อของวิธีการหรือค่าคงที่เป็นส่วนหนึ่งของการดำเนินการ เนื่องจาก() . ::ไม่ใช่ตัวดำเนินการฉันจึงไม่ใช้ข้อ จำกัด 6 กับพวกเขา ฉันอาจนำมาใช้ซ้ำเพื่อสร้างตัวเลขเพิ่มเติม
  2. วิธีการที่มีการใช้งานที่แตกต่างกันเป็นวิธีการที่แตกต่างกัน ตัวอย่างเช่นArray#countและEnumerable#countไม่ใช่ฟังก์ชันเดียวกันสำหรับข้อ จำกัด 6 ทั้งสองวิธีทำหน้าที่เหมือนกัน แต่Array#countแทนที่Enumerable#countด้วยการใช้งานที่แตกต่างกัน ถ้าฉันใช้Array#countเพื่อสร้างหนึ่งหลักฉันอาจใช้Enumerable#countเพื่อสร้างตัวเลขอื่น
  3. Class # new เป็นวิธีหนึ่ง ในทับทิมMutex.new, Random.new, Time.newและอื่น ๆ Class#newหมายถึงวิธีการเดียวกัน ฉันใช้SignalException.newเพื่อสร้างหนึ่งหลัก เนื่องจากข้อ จำกัด ของ 6 Class#newผมอาจจะไม่เคยใช้อีกครั้ง
  4. ค่าคงที่สำหรับคลาสหรือโมดูลยังคงเป็นค่าคงที่ ใน Ruby ชื่อคลาสที่ชอบFloatและIOเป็นค่าคงที่! ฉันใช้IO::LOCK_NBเพื่อสร้างหนึ่งหลัก เนื่องจากข้อ จำกัด ของ 6 IOผมอาจจะไม่เคยใช้อีกครั้ง การตีความนี้เชื่อมโยงทับทิมเท่านั้นและไม่ใช่ภาษาอื่น ๆ ที่ชื่อแพคเกจไม่คงที่
  5. ตัวอักษรไม่ใช่ค่าคงที่ แม้ว่า 2 เป็นค่าคงที่ทางคณิตศาสตร์ (เป็นอิสระจากตัวแปรใด ๆ ) แต่ก็ไม่ได้เป็นค่าคงที่ใน Ruby ฉันไม่ใช้ข้อ จำกัด 6 กับตัวอักษรและฉันอาจใช้ตัวอักษร 2 ซ้ำได้มากกว่าหนึ่งหลัก
  6. ตัวอักษรไม่ใช่ตัวดำเนินการ ฉันไม่สามารถใช้ข้อ จำกัด 6 วงเล็บหรือคำพูดที่ว่ารูปแบบอาร์เรย์อักษร hashes, [] {} // ''การแสดงออกปกติหรือสตริงในขณะที่ ฉันอาจใช้ตัวอักษรเช่นนี้เพื่อสร้างตัวเลขมากขึ้น
  7. ค่าคงที่สองค่าที่มีค่าเดียวกันคือค่าคงที่เดียวกัน File::APPENDและIPSocket::LOCK_UNเป็นสองชื่อสำหรับหมายเลขเดียวกัน 8 ข้อ จำกัด 6 กล่าวว่า "ไม่สำคัญว่าชื่อใดที่คุณอ้างถึงในตัว" เพราะFile::APPENDและIPSocket::LOCK_UNแตกต่างกันตามชื่อพวกเขาจะต้องคงที่เหมือนกันดังนั้นฉันจึงไม่สามารถใช้พวกมันเป็นตัวเลขสองหลักได้
  8. ตัวเลขสองหลักอาจไม่อ้างอิงตัวแปรส่วนกลางเดียวกัน นี่เป็นการปิดช่องโหว่ ข้อ จำกัด 6 ใช้เฉพาะกับฟังก์ชันตัวดำเนินการและค่าคงที่เท่านั้น ข้อ จำกัด 4 ใช้กับตัวอักษรเท่านั้น $SAFEเป็นตัวแปรโกลบอลในตัวไม่ใช่ฟังก์ชันโอเปอเรเตอร์ค่าคงที่หรือตามตัวอักษร $SAFEมีค่า 0 ด้วยช่องโหว่ฉันสามารถใช้ซ้ำ$SAFEเพื่อสร้าง 0 ทุกหลักในโปรแกรม ฉันปิดช่องโหว่ด้วยการตีความข้อ จำกัด ที่ 6 เพื่อ จำกัด ตัวแปรทั่วโลก

ความคิดเห็น

#!ruby -rdate -rdigest -ropenssl -rprime -rset -rsocketบรรทัดแรกคือ ทับทิมแยกวิเคราะห์บรรทัดนี้และโหลดหกส่วนของห้องสมุดมาตรฐานของตนเช่นถ้าrequire 'date', require 'digest'และอื่น ๆ ฉันไม่นับตัวอักษร 56 ตัวเหล่านี้เนื่องจากข้อ จำกัด 3 ยกเว้น "การนำเข้า / รวมไลบรารีมาตรฐาน"

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

  1. 1จาก2/2: Division Fixnum # /
    .จาก?.: สตริงอักขระตัวเดียว
  2. 6จาก9-3: การลบFixnum # -
  3. 1จาก3&5: bitwise และFixnum # &
    • โดยการตีความ 5 ฉันอาจใช้3อีกครั้ง
  4. 8จาก2*4: การคูณFixnum # *
  5. 0จาก2^2: bitwise exclusive- หรือFixnum # ^
  6. 3จาก7%4: modulus Fixnum #%
  7. 3จาก55>>4: แก้ไขการแก้ไข Fixnum # >>
  8. 9จาก5+4: การเพิ่มFixnum # +
  9. 8จาก2<<2: left shift Fixnum # <<
  10. 8จาก-~7: การปฏิเสธของส่วนประกอบFixnum # - @ Fixnum # ~
    • การลบFixnum # -และNegation Fixnum # - @เป็นวิธีการที่แตกต่างกัน
  11. 7จาก5|2: bitwise หรือFixnum # |
  12. 4จาก2**2: การยกกำลังFixnum # **
  13. 9จาก(2r+2+5).to_i: rational นอกจากนี้Rational # + Rational # to_i
    • โดยการตีความ 2, Fixnum # +และRational # +เป็นวิธีการที่แตกต่างกัน พวกเขาทั้งสองเพิ่มหมายเลข แต่พวกเขามีการใช้งานที่แตกต่างกันเริ่มต้นจากประเภทที่แตกต่างกันสำหรับหมายเลขด้านซ้าย
    • ตัวอักษรที่มีเหตุผลเหมือน2rใหม่ใน Ruby 2.1 2r+2เรียกใช้Rational # +และส่งกลับเหตุผลอื่น 2r+2+5โทรหา Rational # +อีกครั้ง
    • ทับทิมพิมพ์ rationals เหมือนลอยเหมือน2/1 2.0ในการแก้ไขปัญหานี้ฉันแปลงเป็นจำนวนเต็ม: to_iปัดเศษเป็นศูนย์, ยกเพดานขึ้น,ชั้นรอบลง
  14. 8 จาก (2.2+5).ceil : float การลอยเพิ่ม# + Float # ceil
    • โดยการตีความ 1 ฉันอาจใช้วงเล็บ()และจุด.อีกครั้ง
  15. 9 จาก (55r/5-2).floor : การหารด้วยเหตุผลและการลบRational # / Rational # - Rational # floor
  16. 4 จาก (2.2*2).to_i : การทวีคูณลอยตัว Float # * Float # to_i
  17. 8 จาก (2r*2*2).ceil : rational multiplication Rational # * Rational # ceil
  18. 4 จาก (2.2**2).floor : การยกกำลังด้วยเหตุผล Rational # **
  19. 8 จาก 2.to_bn<<2 : left shift พร้อม OpenSSL จำนวนมากFixnum # to_bn OpenSSL :: BN # <<
  20. 2 จาก __LINE__ : ค่าคงที่เวทมนตร์สำหรับหมายเลขบรรทัดปัจจุบัน
  21. 0จาก$<.to_i: ตัวอธิบายไฟล์ของอินพุตมาตรฐาน IO # to_i
  22. 4 จาก IO::LOCK_NB : ตั้งค่าสถานะสำหรับการล็อคไฟล์ที่ไม่ปิดกั้น
    • นี่เป็นครั้งแรกของค่าคงที่จำนวนมากที่ต้องพึ่งพาระบบ OpenBSD มี 4
    • โดยการตีความ 4 IOผมอาจจะใช้ไม่ได้อีกต่อไป โดยการตีความ 7 ฉันไม่อาจใช้ค่าคงที่ใด ๆ กับค่า 4 อีกต่อไป
  23. 5 จาก Errno::EIO::Errno : หมายเลขสำหรับข้อผิดพลาดอินพุต / เอาต์พุต
  24. 8 จาก File::APPEND : ตั้งค่าสถานะเพื่อผนวกเข้ากับไฟล์
    • นี่คือช่องโหว่รอบตีความ 4. ฉันไม่อาจใช้IOแต่FileคงสืบทอดจากIOจึงเป็นวิธีที่แตกต่างกันที่จะได้รับFile::APPENDIO::APPEND
  25. 6จาก'aaaaaa'.size: ความยาวของสตริงสตริง # ขนาด
  26. 8จาก?a.encoding.name.sub(/\D+/,''): ส่วนหนึ่งของชื่อของการเข้ารหัสสตริง # การเข้ารหัสการเข้ารหัส # ชื่อสตริง # ย่อย
    • โดยการตีความ 6 ฉันอาจใช้อัญประกาศสตริงอีกครั้ง
    • ตั้งแต่ Ruby 2.0 การเข้ารหัสเริ่มต้นคือ UTF-8 ฉันใช้ชื่อ "UTF-8" และแทนที่ / \ D + / จับคู่ "UTF-" ด้วยสตริงว่าง อัตราผลตอบแทนนี้ "8"
  27. 3จาก%w[a a a].size: ความยาวของอาร์เรย์Array # size
  28. 4จาก%w[a b c d].to_set.size: จำนวนองค์ประกอบในชุดArray # to_set Set # size
  29. 3จาก%w[a a a].count: นับองค์ประกอบทั้งหมดArray # count
    • ความแตกต่างระหว่างArray # sizeและArray # countคือหลังจะใช้อาร์กิวเมนต์ตัวเลือกเพื่อเลือกองค์ประกอบที่จะนับ ฉันไม่ผ่านการโต้แย้งดังนั้นมันจึงนับองค์ประกอบทั้งหมด
  30. 6จากSocket::AF_NS: หมายเลขสำหรับตระกูลที่อยู่ NS
  31. 5จากDate.jd(Date::ITALY).wday: หมายเลขวันทำงานของวันศุกร์ที่ 15 ตุลาคม 1582 เมื่ออิตาลีเปลี่ยนเป็นปฏิทินเกรกอเรียนวันที่ :: jd Date # wday
  32. 6จาก*Digest::MD5.digest(?j).scan(/\d/): หลัก ASCII แรกในการแยกย่อยไบนารี MD5 ของ "j" Digest :: MD5 :: แยกย่อยการสแกน String #
    • String # scanส่งคืนอาร์เรย์ของการแข่งขันทั้งหมด ผ่านองค์ประกอบอาร์เรย์เป็นข้อโต้แย้ง* printอาร์เรย์นี้คือ ["6"]
  33. 3จากSet[?a,?b,?c].count: นับองค์ประกอบทั้งหมดตั้ง :: [] นับ # จำนวน
    • ด้วยการตีความ 2 Array # countและEnumerable # countเป็นวิธีการที่แตกต่างกัน
  34. 8จากSignalException.new('FPE').signo: จำนวน SIGFPE Class # ใหม่ SignalException # signo
  35. 1 จาก Float::ROUNDS : โหมดการปัดเศษที่นี่ 1 สำหรับการปัดเศษที่ใกล้ที่สุด
  36. 1จากbegin(ขึ้นบรรทัดใหม่) exit false(ขึ้นบรรทัดใหม่) rescue Object(ขึ้นบรรทัดใหม่) $!.status(ขึ้นบรรทัดใหม่)end : สถานะออกสำหรับความล้มเหลว
    • นี่คือค่าเช่นเดียวกับSystemExit.new(false).statusแต่ความหมายที่ 3 ฉันไม่อาจจะเรียกชั้น # ใหม่ ฉันจะยกระดับและช่วยเหลือ SystemExit แทน
  37. 7 จาก Process::RLIMIT_NPROC : หมายเลขสำหรับขีด จำกัด ทรัพยากรสำหรับจำนวนกระบวนการสำหรับผู้ใช้หนึ่งราย
  38. 7จาก:aaaaaaa.size: ความยาวของสัญลักษณ์Symbol # size
  39. 2จากPrime.first: หมายเลขเฉพาะแรกนับได้# แรก
  40. 0จาก?/.next: สตริงถัดไปหลังจากที่ "?" String # ต่อไป
  41. 3จาก{a:p,b:p,c:p}.size: ความยาวของแฮชแฮชขนาด # สตริง # p
  42. 0จากSTDIN.lineno: หมายเลขบรรทัดปัจจุบันสำหรับอินพุตมาตรฐานIO # lineno
    • โดยการตีความที่ 8 $<ฉันไม่อาจนำมาใช้ใหม่ STDINฉันใช้ ความแตกต่างก็$<คือตัวแปรทั่วโลกและSTDINเป็นค่าคงที่ โปรแกรมอาจตั้ง$<เพื่อการป้อนข้อมูลที่แตกต่างกัน แต่อยู่เสมอค่าเดิมของSTDIN$<
  43. 3จาก?a.crypt('at')[/\d/]: หลัก ASCII แรกในรหัสผ่านที่เข้ารหัสString # crypt String # []
    • ระบบที่มีฟังก์ชัน crypt () ที่แตกต่างกันจะให้ผลลัพธ์ที่ต่างกัน
  44. 0จาก{a: :a}.find_index([:a,:a]): ดัชนีของคีย์แรก: a, value: a in hash Enumerable # find_index
    • ฉันใช้แฮชไม่ใช่อาร์เรย์เพราะArray # find_indexเป็นนามแฝงสำหรับดัชนี Array #ซึ่งฉันวางแผนที่จะใช้ในไม่ช้า
  45. 9จาก/b/=~'aaaaaaaaab': ดัชนีที่สตริงตรงกับ / b / Regexp # = ~
  46. 1จาก[?a,?b].index(?b): ดัชนีของ "b" ตัวแรกในอาร์เรย์Array # index
  47. 7จาก:aaaaaaab=~/b/: ดัชนีที่ตรงกับสัญลักษณ์ / b / Symbol # = ~
  48. 9จาก?\t.ord: ค่า ASCII ของแท็บ "\ t" String # ord
  49. 8จาก'aaaaaaaab'=~/b/: ดัชนีที่ตรงกับสตริง / b / String # = ~
    • โดยการตีความ 2, Regexp # = ~และString # = ~เป็นวิธีการที่แตกต่างกัน
  50. 0จากopen(?/).pos: ตำแหน่งในไฟล์หลังจากเปิดไดเรกทอรีราก "/" เป็นไฟล์Kernel # open IO # pos
  51. 5จาก'aaaaab'.index(?b): ดัชนีของ "b" ตัวแรกในสตริงString # index
  52. 7จาก?\a.bytes{|b|break b}: ค่า ASCII ของการแจ้งเตือน "\ a" String # bytes
    • มันทำงานได้โดยการวนซ้ำใน "\ a" แต่แบ่งลูปโดยส่งกลับไบต์แรก
  53. 6จาก'aaaaaaa'.rindex(?a): ดัชนีสุดท้าย "a" ในสตริงString # rindex
  54. 2จาก%w[a a].map.size: ขนาดของตัวแจงนับที่แม็พจากอาร์เรย์Array # map Enumerator # size

ที่น่าประทับใจ! การตีความส่วนใหญ่ของคุณสอดคล้องกับกฎระเบียบอยู่แล้ว 1. ฉันไม่เคยตั้งใจจะเรียกใช้ตัวดำเนินการ dereferencing และตัว จำกัด การเข้าถึงซึ่งเป็นสาเหตุที่ฉันพูดว่าตัวดำเนินการ "ทางคณิตศาสตร์บูลีนบิตฉลาดและสตริง" 2. ครอบคลุมโดยกฎ 6 3. การใช้ใหม่จะใช้ได้ในภาษาอื่นเพราะโดยปกติแล้วมันจะเป็นโอเปอเรเตอร์ - มันไม่สามารถนำกลับมาใช้ใหม่ในคลาสเดียวกันได้ ในทับทิมเป็นอย่างไร ไม่newจริงเสมอเรียก imlpementation เดียวกันหรือมันคือแทนที่ใน subclasses? [ctd.]
Martin Ender

4. ฉันจะไม่เป็นไรถ้าคุณทำข้อยกเว้นสำหรับ Ruby แต่ขอบคุณสำหรับการเล่นกีฬาของคุณ ;) 5. และ 6. ไม่มีเลยซึ่งเป็นเหตุผลว่าทำไมกฎบางข้อจึงระบุไว้ในแบบที่เป็น 7. นั่นเป็นจุดที่ดีที่ฉันไม่ได้คิด ในทางเทคนิคหากพวกเขาไม่อ้างถึง8 คนเดียวกันมันก็น่าจะใช้ได้ทั้งคู่ 8. จุดดีฉันไม่ได้คิดถึงตัวแปรในตัว ฉันจะตรวจสอบว่ามันไม่ได้ละเมิดข้อตกลงอื่น ๆ และแก้ไขกฎ 6 อย่างมากขอบคุณสำหรับการเล่นที่ยุติธรรม! :)
Martin Ender

ฉันไม่พบการละเมิดกฎใด ๆ ในคำตอบนี้ดังนั้นฉันจึงยอมรับมัน อย่างไรก็ตามฉันต้องการให้รางวัลกับคำตอบของคุณเนื่องจากเป็นคำที่ยาวที่สุดที่เล่นโดยการท้าทาย ดังนั้นฉันจะเสนอรางวัลสำหรับความท้าทายนี้ เงินรางวัลจะดำเนินไปเป็นเวลาเจ็ดวันและหากคำตอบมาพร้อมกับความคิดของคุณในแบบ "ยุติธรรม" ฉันจะให้รางวัลตามนั้น (แน่นอนคุณมีอิสระที่จะลองและเอาชนะคู่แข่งใด ๆ ;)) หวังว่าคุณจะพอใจกับมัน!
Martin Ender

5

Java, 21 หลัก, 276 ตัวอักษร

class C{public static void main(String[]a){System.out.print((3&5)+"."+(2|4)+Byte.BYTES+2*4+"".length()+(7-4)+~-4+(7+2)+(2<<2)+(int)Math.sqrt('@')+(2^5)+(int)Math.pow(2,2)+32%23+Byte.SIZE+('$'>>2)+Float.BYTES+Long.BYTES+Integer.BYTES+Double.BYTES+Short.BYTES+Math.round(.2));}}

class C {
  public static void main(String[] a) {
    System.out.print(
      (3&5)+       // 1
      "."+         // .
      (2|4)+       // 6
      Byte.BYTES+  // 1
      2*4+         // 8
      "".length()+ // 0
      (7-4)+       // 3
      ~-4+         // 3
      (7+2)+       // 9
      (2<<2)+      // 8
      (int)Math.sqrt('@')+  // 8
      (2^5)+       // 7
      (int)Math.pow(2,2)+   // 4
      32%32+       // 9
      Byte.SIZE    // 8

      // rest of explanation to come later today
    );
  }
}

ฮาฉันชอบ7-4& -4+7ที่ฉลาด! :)
Martin Ender

ฉลาด แต่ฉันคิดว่ามันเป็นการละเมิดกฎของการไม่ใช้ค่าคงที่อีกครั้ง (ใช้ค่าบวก 7 ทั้งคู่)
misu

1
@rangu 7ไม่คงที่ แต่เป็นตัวอักษร
Martin Ender

แล้วทำไมคุณถึงหยุดอยู่ตรงนั้นล่ะ?
Valentin Grégoire

4

Ruby, 74 ตัวอักษร, 10 หลัก

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

$><<[3-2,?.,3+3,?..size,2**3,$*.size,24/8,7%4,[*7..77][2],2*4,7.next].join

ฉันบันทึกตัวละครไว้ถึง 76 ตัวในภายหลังเมื่อมันยากขึ้น!


เป็นการเริ่มต้นที่ดี! ในที่สุดคำตอบด้วยจิตวิญญาณของคำถาม :)
Martin Ender

3

Ruby, 17 หลัก, 168 ไบต์

$><<[-~0,'.',9-3,3/3,2**3,$.,25%22,'   '=~/$/,2+7,2<<2,"10".oct,2|5,[2,2,2,2].size,[*$....2*5].last,(2^5).succ,'a'.to_i(25).pred,'aaaa'.count('a'),eval(55.chr.next)]*''

Ungolfed:

$><<[
  -~0,                # 1
  '.',                # .
  9-3,                # 6
  3/3,                # 1
  2**3,               # 8
  $.,                 # 0
  25%22,              # 3
  '   '=~/$/,         # 3
  2+7,                # 9
  2<<2,               # 8
  "#{'a'.hex}".oct,   # 8
  2|5,                # 7
  [2,2,2,2].size,     # 4
  [*$....2*5].last,   # 9
  (2^5).succ,         # 8
  'a'.to_i(25).pred,  # 9
  'aaaa'.count('a'),  # 4
  eval(55.chr.next)   # 8
]*''

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


1
"ยังไม่ถูกบังคับให้ทำอะไรที่ฉลาดเป็นพิเศษ" ใช่ฉันคิด Ruby, Perl และผู้ต้องสงสัยตามปกติจะไม่ได้มีช่วงเวลาที่ยากจริงๆด้วย 15 ตัวอักษรต่อหลัก แต่ฉันต้องการที่จะออกจากห้องสำหรับสิ่งต่าง ๆ เช่น C-Derivative และ Mathematica กับห้องสมุดมาตรฐานขนาดใหญ่ แต่ชื่อที่ซับซ้อนมากขึ้น
Martin Ender

"หากพวกเขาเป็นเพียงนามแฝงจริงๆไม่มี [คุณไม่สามารถใช้พวกเขา]" succและnextเป็นนามแฝง
ลูกบิดประตู

1
อย่างแรกคือการเรียกใช้บน Fixnum ตัวที่สองบนสตริงดังนั้นฉันไม่คิดว่ามันจะนับเป็นวิธีเดียวกัน
ฮิสโทแกต

อ่าจุดดี อย่างไรก็ตามคำถามนี้ยังกล่าวว่า "คุณต้องไม่อ้างอิงค่าคงที่ ... ที่คุณใช้ในรหัสที่สร้างตัวเลขก่อนหน้านี้" และคุณใช้$.สองครั้ง ถึงแม้ว่าจะต้องรัก$....: D
Doorknob

2

Golfscript , 17 หลัก

ความพยายามที่ตรงไปตรงมา Golfscript อาจมีบิวด์อินที่ไม่ใช่ตัวอักษรและตัวเลขจำนวนมาก แต่มันก็มีบิวด์อินจำนวนมากโดยรวม!

".",                         # 1: string length (separate from array length)
'.'    
3 3+                         # 6: addition
''[49]+                      # 1: string concatenation
-9~                          # 8: bitwise not
2!                           # 0: boolean not
7 4%                         # 3: modulus
4(                           # 3: decrement
7))                          # 9: increment
257 2/2/2/2/2/               # 8: division
4 2*                         # 8: multiplication
22 5- 5- 5-                  # 7: subtraction
2 2?                         # 4: power
[2 5] 2 base                 # 9: base conversion
[2 2 2 2 2 2 2 2],           # 8: array length (separate from str length)
[2 2 2 2 2 2 2 2 2 5]5?      # 9: array.find()
2 2+                         # 4: addition
"2 2*2*"~                    # 8: eval

2
ฉันคิดว่าคุณสามารถทำต่อไป5,)\; # range, right uncons, flip, and popได้
Peter Taylor

1

Bash, 5 หลักใน 65 ตัวอักษร

ฉันจะอัปเดตในไม่ช้า! สำหรับตอนนี้มันเพิ่งพิมพ์1.6180และไม่มีตัวเลขใด ๆ

false
tr -d ' '<<<$?.`wc -c<<<abcde``nl<<<' '``kill -l FPE`$(())

คำอธิบาย

วิธีการต่อไปนี้จะใช้ในการสร้างตัวเลข:

1: สถานะทางออกของ false

6: ความยาวสตริง

1: nlการละเมิด

8: killหมายเลขสัญญาณ

0: ค่าตัวเลขของนิพจน์ที่ว่างเปล่า


1

Mathematica 9 8 หลักใน86 83 78 ตัวอักษร

10`8FromDigits@#/10^Length@#&@{a/a,3!,-I I,2π/(45°),#&''[],Prime@2,Sqrt@9,4+5}

เอาท์พุท:

1.6180339

อาฉันรู้ว่าฉันทำผิดพลาดที่ไหนสักแห่งสัญกรณ์การแก้ไขดูเหมือนจะไม่ทำงานในกรณีนี้ การใช้ unicode Pi และ Degree นั้นยังคงใช้ได้อยู่
Tally

ใช่ว่า # & '' [] จะสร้างข้อผิดพลาดจากอินพุตที่ขาดหายไปในขณะที่ในรูปแบบนี้จะไม่สนใจว่าไม่มีอินพุต ยังไม่ได้แก้ตัวให้ฉันไม่ใช้มันในที่ที่มันทำงาน
Tally

1
ขอบคุณ. ฉันรัก # & '' [] (โดยทั่วไปอนุพันธ์อันดับสองของ f [x] = x
Tally

(ทำความสะอาดความคิดเห็น) ที่ เป็นสิ่งที่ดีมาก แต่คุณอาจจะได้บันทึกตัวอักษรโดยการแทนที่#ที่มีหลักที่ได้รับอนุญาตและลดลงหนึ่งขีดกลาง
Martin Ender

คิดด้วยวิธีนี้ฉันจะสามารถบันทึกตัวเลขนั้นไว้เพื่อใช้ในอนาคต
Tally

1

Julia - 23 หลักใน 345 ตัวอักษร (15 ต่อหลักทุกประการ)

print(div(2,2),'.','/'+7,length(" "),2^3,size([])[end],isqrt(9),int(cbrt(27)),54-45,'h'$'P',[2:22][7],endof("2222222"),count(isodd,[5,5,5,5]),search("Hello man",'n'),nextpow2(5),rsearch("Love boat",'t'),sizeof('й'),("I"summary(b"H"))[22],iceil(float(pi)),iround(cosh(e)),ifloor(exp(catalan)),cmp(5,5),itrunc(5sin(one(Int))),uint(erfcx(-ones())))

เอาท์พุท: 1.6180339887498948482045

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

ในรูปแบบที่อ่านได้ง่ายขึ้น (ไม่ใช่รหัสจริง):

1> div(2,2)
.> '.'
6> '/'+7
1> length(" ")
8> 2^3
0> size([])[end]
3> isqrt(9)
3> int(cbrt(27))
9> 54-45
8> 'h'$'P'
8> [2:22][7]
7> endof("2222222")
4> count(isodd,[5,5,5,5])
9> search("Hello man",'n')
8> nextpow2(5)
9> rsearch("Love boat",'t')
4> sizeof('й')
8> ("I"summary(b"H"))[22]
4> iceil(float(pi))
8> iround(cosh(e))
2> ifloor(exp(catalan))
0> cmp(5,5)
4> itrunc(5sin(one(Int)))
5> uint(erfcx(-ones()))

0

C ++ 12.4 ตัวอักษรต่อบรรทัดคือ 14 ตัวอักษรต่อบรรทัดสำหรับแต่ละหลัก

แก้ไขข้อผิดพลาดของฉันในการนำผู้ประกอบการมาใช้ซ้ำ

#include <iostream>
#include <math.h>
#define S std::string
#define C(x) std::cout<<x
int main()
{
C(cos(0));
C(char(46));
C('j'%'d');
C('\0'+3-2);
C(sqrt('@'));
C(log(1));
C('c'/'!');
S s("xyz");
C(s.size());
return 0;
}

ไม่แน่ใจว่าการใช้ตัวอักษรแบบนี้นับว่าเป็นตัวอักษรถ่านหรือไม่? หากรหัสนี้เป็นที่ยอมรับก็สามารถดำเนินการต่อไปได้ตลอดไปและจะชำระหนี้คืน

#include <iostream>
#define C(x) std::cout<<x
int main()
{
C('b'-'a');//1
C(char(46));//.
C('g'-'a');//6
C('b'-'a');//1
C('i'-'a');//8
C('a'-'a');//0
C('d'-'a');//3
C('d'-'a');//3
C('j'-'a');//9
//etc
return 0;
}

ตัวอักษรนั้นใช้ได้ (เพราะไม่เท่ากับตัวเลขหลักเดียว) แต่คุณยังคงใช้งาน-โอเปอเรเตอร์ต่อไป นอกจากนี้ฉันชอบวิธีที่คุณนับความคิดเห็นสำหรับความยาวบรรทัด : D
Martin Ender

ใช่ว่าดูดีขึ้นมาก แต่คุณใช้1ในการผลิต0(ซึ่งไม่ได้รับอนุญาตเพราะ1ปรากฏก่อนหน้านี้ในอัตราส่วนทองคำ) นอกจากนี้คุณยังต้องนับ#define S(ไม่ใช่อันอื่น) เนื่องจากไม่ใช่การรวม แต่เพียงกำหนดชื่อชวเลข
Martin Ender
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.