แสดงให้ฉันเห็นปีศาจที่ใกล้ที่สุด


42

หมายเลขอสูรเป็นจำนวนเต็มบวกที่มีค่าทศนิยมประกอบด้วย 6 เท่านั้นรายการหมายเลขอสูรเริ่มต้นด้วย 6, 66, 666, 6666

รับจำนวนเต็มบวกส่งออกหมายเลขปีศาจที่ใกล้ที่สุด หากมีสองให้ส่งออกที่ใหญ่กว่า

Testcases:

n   output
1   6
2   6
3   6
6   6
35  6
36  66
37  66
100 66
365 66
366 666
666 666
999 666

นี่คือรหัสกอล์ฟคำตอบที่สั้นที่สุดในการชนะไบต์


1
จำนวนสูงสุดที่เราให้การสนับสนุนคือเท่าใด
Mr. Xcoder

1
@ Mr.Xcoder มีขนาดใหญ่เท่าที่คุณสามารถรองรับได้
Leun Nun

3
@LeakyNun ในขณะที่ฉันไม่ได้เป็นประจำถ้า PPCG ฉันจะบอกว่ากฎไม่ดีจริงๆเพราะฉันสามารถพูดว่า "ฉันสามารถรองรับตัวเลขได้ถึง 34 เพราะฉันต้องการมีรหัสที่สั้นที่สุด"
Ferrybig

5
@Ferrybig มีขนาดใหญ่เท่าที่คุณสามารถรองรับได้ดังนั้นโดยทั่วไปมีขนาดใหญ่เท่ากับภาษาที่ จำกัด คุณ
Leun Nun

3
เห็นได้ชัดว่าปีศาจที่ใกล้ที่สุดคือJörg W Mittag
user2357112

คำตอบ:


51

Python 2, 28 ไบต์

lambda n:'6'*len(`-~n*3/11`)

3
นั่นเป็นทางออกที่เรียบร้อย
Leun Nun

ว้าวมันน่าประทับใจ ฉันเป็น 105 ไบต์โดยใช้วิธีการฉีกขาดเล็กน้อย ดี!
HyperNeutrino

4
เด็ดมาก คุณคิดยังไงกับอัลกอริทึมนี้?
David Z

ที่น่ากลัว. ค่าที่เทียบเท่าใน JS นั้นยาวขึ้นอีกเล็กน้อย:x=>'6'.repeat((''+-~(x*3/11)).length)
Steve Bennett

8
@DavidZ คำแนะนำ: ค่าเฉลี่ย 666 และ 6666 เป็น 3.6666... = 11/33666.
orlp

14

JavaScript (ES6), 31 29 ไบต์

f=(x,s='6')=>x<3+s?s:f(x,s+6)

“ นั่นคือเหตุผลที่ฉันพอใจในจุดอ่อน […] เพราะเมื่อฉันอ่อนแอฉันก็เข้มแข็ง”


ว้าวสำหรับครั้งหนึ่งการแปลงประเภทของ Javascript นั้นเป็นสิ่งที่คุณต้องการ :) ยอดเยี่ยมมาก
Steve Bennett

“ นั่นคือเหตุผลที่ฉันดีใจในความอ่อนแอ […] เพราะเมื่อฉันอ่อนแอฉันก็เข้มแข็ง” ~~ 2 โครินธ์ 12:10
จอห์นดวอแร

@JohnDvorak "ดังนั้นฉันมีความสุขในความทุพพลภาพ [... ] เพราะเมื่อฉันอ่อนแอจากนั้นฉันก็เข้มแข็ง" ฟังดูดีกว่า
MoustacheMoses


5

Java 7, 96 93 66 ไบต์

String c(int n){String r="";for(n*=11/3;n>1;r+=6,n/=10);return r;}

ท่าเรือ@orlpที่น่าตื่นตาตื่นใจงูหลาม 2 คำตอบ

ลองที่นี่

ฉันเดาฉัน66ไบต์คู่นับเป็นปีศาจได้เป็นอย่างดี ;)
(ไม่คำตอบที่สั้นที่สุด Java BTW ดู@JollyJokerคำตอบของการที่แทน


การใช้เลขคณิตเลขจำนวนเต็มต้องสั้นลง
Leun Nun

1
ได้โปรดกอล์ฟอีกหนึ่งไบต์! : p
Olivier Grégoire

1
การทดสอบของคุณไม่ถูกต้อง
Leun Nun

1
@ OlivierGrégoire Needs r = "" เป็นตัวแก้ไขข้อผิดพลาดอยู่แล้วดังนั้นคุณจะได้รับความปรารถนาของคุณ :)
JollyJoker

@LeakyNun อ๊ะ .. คัดลอกโค้ดที่ไม่ถูกต้อง .. ควรจะได้รับ"6" ""
Kevin Cruijssen

4

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

Ẇa6ḌạÐṂ⁸Ṫ

ลิงค์ monadic

ลองออนไลน์! - เกือบไม่มีจุดในลิงค์นี้ (ดูด้านล่าง)!

อย่างไร?

ในสไตล์นักกอล์ฟที่แท้จริงสิ่งนี้ไม่มีประสิทธิภาพอย่างแท้จริง - มันถึงเวลา 60 วินาทีที่ TIO สำหรับกรณีทดสอบ365 ! ในพื้นที่นี้เสร็จสิ้นในยุค 37

Ẇa6ḌạÐṂ⁸Ṫ - Main link: n
Ẇ         - all sublists - this has an implicit make_range on it's input
          -   so, for example, an input of 3 yields [[1],[2],[3],[1,2],[2,3],[1,2,3]]
          -   the important things are: that it contains both a list of the length of the
          -   decimal number, and a list 1 shorter; and that it's lists only contain
          -   non-zero numbers and are monotonically increasing in length.
  6       - literal 6
 a        - and (vectorises), this changes all the values to 6s
          -    so, the example above becomes [[6],[6],[6],[6,6],[6,6],[6,6,6]]
   Ḍ      - convert to decimal (vectorises)  [ 6,  6,, 6,  66,   66,   666   ]
       ⁸  - link's right argument, n
     ÐṂ   - filter keep those with minimal:
    ạ     -   absolute difference (for 366 this keeps 66 AND 666; same goes for 3666; etc.)
        Ṫ - tail - get the rightmost result (for 366 keeps 666, since it's longer)

แพทช์เพื่อให้อัลกอริทึมเดียวกันทำงานภายในขีด จำกัด 60s สำหรับ365และ366ใน TIO คือการหลีกเลี่ยงการ vectorisation โดยนัยของด้วยẆa6Ḍ€ạÐṂ⁸Ṫ( ลองที่ ) แต่ตอนนี้จะ seg-fault สำหรับอินพุตของ999 ( สามเหลี่ยม (999))เท่านั้น499,500แต่แต่ละรายการเป็นจำนวนเต็มทำให้มีจำนวนTetrahedral (999) = 166,666,500จำนวนเต็มไม่ใช่หน่วยความจำที่มีประสิทธิภาพอย่างน้อยใน Python


3

เยลลี่ 10 ไบต์

RD6ṁḌạÐṂ¹Ṫ

ลองออนไลน์!


พอร์ตจะสั้นกว่านี้ไหม
Leun Nun

ฉันพยายามและได้ 10 เช่นกัน
เดนนิส

โอ้เป็นปัญหาที่ต้องแทรกช่องว่างระหว่าง 11 และ 6 หรือไม่?
Leun Nun

ไม่แน่ใจว่าคุณจะใส่11 ได้อย่างไรและ6ถัดจากกันได้อย่างไร บางทีฉันอาจจะขาดอะไรบางอย่าง ฉันได้รับ‘×3:11Ṿ”6ṁเอาต์พุตสตริง‘×3:11D6ṁḌสำหรับจำนวนเต็ม
เดนนิส


3

JavaScript (ES6), 41 ไบต์

f=(n,i=0,j=6)=>n*2<j?i||6:f(n-j,i+j,j*10)

กรณีทดสอบ


3

Mathematica, 36 ไบต์

ฟังก์ชั่นบริสุทธิ์:

Max[NestList[6+10#&,6,#]~Nearest~#]&

คำอธิบาย:

    NestList[6+10#&,6,#]

ซ้ำสร้างรายการของความยาวเท่ากับการป้อนข้อมูลที่ใช้NestListต่อไปนี้รูปแบบที่เริ่มต้นจากค่าของ6+10x(previous_value)6

                        ~Nearest~#

จากนั้นหาค่าในรายการนี้ที่ใกล้เคียงกับอินพุตมากที่สุด

Max[                              ]

ใช้ค่าสูงสุดจากรายการค่าที่ใกล้ที่สุด

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



3

05AB1E , 10 9 ไบต์

- 1 ไบต์ขอบคุณ Riley

6׌ΣI-Ä}¬

ลองออนไลน์!

โค้ดด้านบนอาจมีปัญหาด้านประสิทธิภาพนี่เป็นรุ่นที่มีประสิทธิภาพมากกว่าเล็กน้อยกับ 10 ไบต์: ทางเลือก TIO

คำอธิบาย

6׌ΣI-Ä}¬   Main link. Argument n
6×          Push string containing '6' n times
  Œ         Push substrings
   Σ   }    Sort by result of code
    I-Ä     Absolute difference between n
        ¬   Head, implicit output

ใช่ แต่แล้วมันมีปัญหาเรื่องประสิทธิภาพในการทดสอบครั้งสุดท้าย สูงสุด 60 วินาทีใน TIO ไม่เพียงพอที่จะเรียกใช้ผ่าน):
kalsowerus

ขอบคุณ @Riley ผมปรับปรุงคำตอบของฉัน :)
kalsowerus


2

Neim , 12 10 ไบต์ (ไม่ใช่การแข่งขัน)

-1 ไบต์ขอบคุณ steenbergh

𝐥𝐈Γ6Θℝ)₁>𝕔

คำอธิบาย:

               Implicit input: [366]
𝐥               Push the length of the input
                [3]
  𝐈             Inclusive range
                [[1, 2, 3]]
   Γ            For each
       ℝ         Repeat
    6            6
     Θ           currently looped value times
                 [[6, 66, 666]]
          )     End for each
             𝕔  Get the closest value to
           ₁    The first line of input...
            >   ...incremented by one
                [666]
                Implicitly print entire stack

น่าเสียดายที่𝕔จะส่งคืนค่าที่ต่ำกว่าในรายการหากตัวเลขสองตัวมีความแตกต่างกันดังนั้นเราจึงต้องเพิ่ม 2 ไบต์ลงในบัญชี

ไม่ใช่การแข่งขันเป็น>, <และถูกเพิ่มเข้ามาหลังจากคำถามนี้ถูกถาม (และ𝐥ได้รับการแก้ไขในการทำงานกับตัวเลขที่ไม่เพียง แต่รายการ)

หมายเหตุ: จะไม่ทำงานกับตัวเลขที่มีความยาวเท่ากับ 19 หรือมากกว่า - เนื่องจากมีขนาดใหญ่เกินไปสำหรับความยาวของ Java ในการจัดการ (แต่นี่เป็นค่าที่ค่อนข้างใหญ่และควรจะใช้ได้)

ลองมัน


แน่นอนคุณสามารถตอบคำถามนี้แข่งขัน ....
Leun Nun

เช่นมันจะทำงานถ้าคุณแทนที่Γ6Θℝ)ด้วยΓΘ𝐈Γ6)𝐣)?
Leun Nun

@LeakyNun ฉันจะดูมัน
Okx

@LeakyNun ไม่ฉันไม่คิดว่าจะมีวิธีที่จะทำให้การแข่งขันเนื่องจากมีข้อบกพร่อง (ตอนนี้แก้ไข) ด้วยลูปที่ฝังอยู่
Okx

ใคร downvoted และทำไม
Okx

2

Java 8, 37 ไบต์

 n->(""+-~n*3/11).replaceAll(".","6");

เป็นไปตามตัวอย่างของ Kevin Cruijssenและเพิ่งคืนค่าสตริง

ใช้เคล็ดลับ * 3/11 เพื่อให้ได้ความยาวที่ถูกต้องจากนั้นแทนที่ด้วย sixes ทั้งหมด


@LeakyNun แน่นอนมีการเพิ่ม-~เวลาสิบที่ผมควรจะได้เห็นในหน้านี้ถ้าฉันให้ความสนใจ ...
JollyJoker

2
ฉันนับ 36 ไบต์ รหัสของคุณมีเครื่องหมายอัฒภาคต่อท้ายและพื้นที่ว่างที่ไม่จำเป็น
แยกผลไม้

1

QBIC , 37 27 ไบต์

≈!@36`!<=:|A=A+!6$]?_sA,2,a

แทนที่จะใช้ Maths ตอนนี้ใช้การจัดการสตริงเพื่อค้นหาการหยุดพักในโดเมน Demonic (36, 366, ... ) แรงบันดาลใจจากคำตอบ JS ของ @ eush77

คำอธิบาย

≈         |  WHILE <condition> 
 !    !        a numerical cast of
  @  `         the string literal A$
   36          starting out as "36"
       <=    is smaller than or equal to
         :   cmd line argument 'a'
A=A+ 6       Add a 6 to the end of A$ (36 ==> 366 ==> 3666)
    ! $         as a string-cast
]            WEND (ends the WHIOLE loop body)
?_sA         PRINT a substring of A$            n=37, A$ = 366
  ,2           starting at index 2                          ^
  ,a           running well past the end of the string      66

1

dc , 46 ไบต์

dsxZ1-10r^d11*2-3/dsylx[0r-]s.<.3*ly+d[6]s.0=.

ลองออนไลน์!

dsxZ1-10r^d11*2-3/dsylx[0r-]s.<.3*ly+d[6]s.0=.
   Z1-10r^                                      Nearest power of 10
           11*2-3/                              The number in between 6ⁿ and 6ⁿ6
          d          lx[0r-]s.<.                Check which side we're on
                                3*ly+           Get the answer for x≥3
                                     d[6]s.0=.  Return 6 for x<3

1

C #, 142 ไบต์

a=>{var c=(a+"").Length;return int.Parse(a<int.Parse(3+new string('6',c==1?2:(c==10?1:c)))?new string('6',c-1):new string('6',c==10?c-1:c));};

มันใช้ความจริงที่ว่าเราต้องข้ามไปยังหมายเลข deamonic ถัดไปที่ทุก ๆ 36,666 ... ในรูปแบบที่อ่านได้มากขึ้น:

var c = (a + "").Length; 
    return int.Parse(a < int.Parse(3 + new string('6', 
        c == 1 ? 2 : (c == 10 ? 1 : c))) 
        ? new string('6', c - 1) 
        : new string('6', c == 10 ? c - 1 : c));

2
ฉันคิดว่าการใช้เลขคณิตจำนวนเต็มแทนที่จะเป็น String สามารถช่วยคุณประหยัดได้เป็นจำนวนมาก
Leun Nun

ดีคุณสามารถแปลงตัวเลขเป็นสตริงใน c # เพียงแค่เพิ่มสตริงลงเพราะมันมีตัวดำเนินการ + มากเกินไปดังที่แสดงในคำตอบ 102 ไบต์ของฉัน .. ฉันยังไม่คิดว่าคุณต้องแยกมันกลับไปที่ int ตามคำถามที่เพิ่งถามเราว่า "เอาท์พุทหมายเลขอสูรที่ใกล้ที่สุด"
lee


1

ฉันไม่เห็นคำถามนี้ในฟีดและสะดุดโดยบังเอิญเท่านั้น นี่คือคำตอบของฉันต่อไป:

JavaScript (ES6), 34 ไบต์

n=>`${-~n*3/11|0}`.replace(/./g,6)

เพิ่ม 1 ไบต์สำหรับคำตอบตัวเลข เริ่มแรกใช้คำตอบ ES7 ที่ไม่ได้รับการตอบรับ (37 ไบต์, เป็นตัวเลขแล้ว):

n=>(10**(Math.log10(-~n*3/11)|0)*2-2)/3

OP น่ารำคาญต้องการให้ 36 ใกล้เคียงกับ 66 มากกว่า 6 คำอธิบาย: 11/3 = 3.666 ... ดังนั้นการหารด้วยสเกลนี้จะมีช่วงเป็น 7..36, 37..366 เป็นต้นไปที่ช่วง 1..9.9, 10 ..99.9 ฯลฯ วิธีนี้สามารถแก้ไขได้อย่างหมดจดโดยใช้ตัวเลข 2/3 ของพลังงานที่น้อยกว่า 10 ถัดไปแม้ว่ามันจะเป็นนักกอล์ฟที่จะตัดทอนแปลงเป็นสตริงแล้วเปลี่ยนอักขระทั้งหมดให้เป็นตัวเลข 6 (แม้ว่าจะยัง ไม่เหมือนกอล์ฟอย่างที่คำตอบแบบเรียกซ้ำที่ฉลาดจริงๆ)


1

CJam, 25 ไบต์

ไม่ช้าเท่ากับการส่ง Jelly ของ Jonathan Alan แต่ต้องใช้หน่วยความจำO (n²)โดยที่nคือหมายเลขอินพุต ใช่.

ri)__{)'6*i}%f-_:z_:e<#=-

นี่เทียบเท่ากับ Python ต่อไปนี้:

num = int(input()) + 1                                      # CJam: ri)__
demondiffs = [int("6" * (i + 1)) - num for i in range(num)] # CJam: {)'6*i}%f-
absdiffs = [abs(i) for i in demondiffs]                     # CJam: _:z
mindex = absdiffs.index(min(absdiffs))                      # CJam: _:e<#
print(num - demondiffs[mindex])                             # CJam: =-

โซลูชันทางเลือก 12 ไบต์

ri)3*B/s,'6*

นี่คือการแปลอัลกอริทึมของ orlp เป็น CJam

คำอธิบาย:

ri           e# Read integer:       | 36
  )          e# Increment:          | 37
   3*        e# Multiply by 3:      | 111
     B/      e# Divide by 0xB (11): | 10
       s     e# Convert to string:  | "10"
        ,    e# String length:      | 2
         '6  e# Push character '6': | 2 '6
           * e# Repeat character:   | "66"
e# Implicit output: 66

1

PHP, 49 ไบต์

ตัดแต่งอักขระ 6

for(;trim($x=$argn+$i,6)>"";)$i=($i<1)-$i;echo$x;

ลองออนไลน์!

แทนที่จะเป็นtrim($x=$argn+$i,6)>""คุณสามารถใช้โซลูชัน Regex !preg_match("#^6+$#",$x=$argn+$i)+11 ไบต์หรือความยาวสตริงเท่ากับการนับ6การเปรียบเทียบstrlen($x=$argn+$i)-strspn($x,6)+10 ไบต์


1

LOLCODE 1.4, 471 ไบต์

HAI 1.4
CAN HAS STRING?
I HAS A i
GIMMEH i
I HAS A l ITZ I IZ STRING'Z LEN YR i MKAY
I HAS A s ITZ "3"
IM IN YR a
BOTH SAEM I IZ STRING'Z LEN YR s MKAY AN l
O RLY?
YA RLY
GTFO
OIC
s R SMOOSH s AN 6
IM OUTTA YR l
I HAS A o
DIFFRINT i AN BIGGR of i AN 4
O RLY?
YA RLY
VISIBLE 6
NO WAI
BOTH SAEM i AN SMALLR of i AN s
O RLY?
YA RLY
o R DIFF OF l AN 1
NO WAI
o R l
OIC
I HAS A f
IM IN YR b UPPIN YR k TIL BOTH SAEM k AN o
f R SMOOSH f AN 6
IM OUTTA YR b
VISIBLE f
OIC
KTHXBYE

ว้าว. นี่คือ Ungolfed และอธิบาย:

HAI 1.4
CAN HAS STRING?
I HAS A input
GIMMEH input
I HAS A length ITZ I IZ STRING'Z LEN YR input MKAY BTW this is using the length function of the STRING library.
I HAS A sixes ITZ "3" BTW the average of for example [6...] and 6[6...] is 3[6...].
IM IN YR foreverloop BTW this loop fills the sixes variable.
    BOTH SAEM I IZ STRING'Z LEN YR sixes MKAY AN length # In LOLCODE, a statement containing only an expression assigns the implicit variable IT.
    O RLY? # Tests the current value in IT.
      YA RLY
        GTFO
    OIC
    sixes R SMOOSH sixes AN 6 BTW SMOOSH automatically casts things to YARN. It also does not need a MKAY unless there's something after it on the line.
IM OUTTA YR foreverloop
I HAS A outputlength
DIFFRINT input AN BIGGR of input AN 4 BTW LOLCODE doesn't have a built-in inequality operator. This just means input < 4
O RLY?
  YA RLY
    VISIBLE 6 BTW If it's less than 4, the algorithm of comparing to the nearest 3.6*10^n.
  NO WAI
    BOTH SAEM input AN SMALLR of input AN sixes BTW input<=sixes
    O RLY? BTW This if statement makes sure that if the input is less than 3.6*10^length, it goes to the previous place value's demon number.
      YA RLY
        outputlength R DIFF OF length AN 1
      NO WAI
        outputlength R length
    OIC
    I HAS A final
    IM IN YR forloop UPPIN YR iterator TIL BOTH SAEM iterator and outputlength
        final R SMOOSH final AN 6
    IM OUTTA YR forloop
    VISIBLE final
OIC
KTHXBYE

ยังคงว้าว นี่คือ pseudojavascrython บางอย่างสำหรับคุณ

hello()
import string
var i
i=input()
var l=string.len(i)
var s="3"
while True:
  if(string.len(s)==l):
    break
  s=s+6
var o
if(i!=max(i,4)): # Basically if(i<4)
  print 6
else:
  if(i==min(i,s)): # Basically if(i<=s)
    o=l-1
  else:
    o=l
  var f
  for(var k=0;k<o;k++):
    f=f+6
  print(f)
exit()

ยังไม่เข้าใจใช่ไหม โปรแกรมนี้เป็นเพียงแค่ (ไม่รวมอินพุต 1-3) เปรียบเทียบอินพุตกับ 3.6 * 10 ^ n, n คือความยาวของอินพุต หากมีขนาดเล็กกว่าจำนวนนั้นจะพิมพ์จำนวน 6s หนึ่งน้อยกว่าความยาว ถ้ามันมากกว่าหรือเท่ากับจำนวนนั้นจำนวนหกเป็นความยาวปัจจุบัน

จะรักการเล่นกอล์ฟ!


0

Haxe, 70 ไบต์

function(x){x*=3;x/=11;do{Sys.print('6');}while((x=Std.int(x/10))>0);}

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

เช่นเดียวกับคำตอบอื่น ๆ ทั้งหมด คูณด้วย 3 หารด้วย 11 พิมพ์ 1 6สำหรับทุกหลัก


0

Brainfuck, 315 ไบต์

,+>+++[>>+<<-]>>[<<<[>+>+<<-]>>[<<+>>-]>-]<+++++++++++<[>>+<<-]>>[<[>>+>+<<<-]>>>[<<<+>>>-]<[>+<<-[>>[-]>+<<<-]>>>[<<<+>>>-]<[<-[<<<->>>[-]]+>-]<-]<<<+>>]<[-]+<[>-]>[<+>->]++++++[<+++++++++>-]<<<[-]++++++++++>[>.<[<<+>>-]<<[>[<<+<+>>>-]<<<[>>>+<<<-]>[<+>>-[<<[-]<+>>>-]<<<[>>>+<<<-]>[>-[>>>-<<<[-]]+<-]>-]>>>+<<]>>]

เรียกได้ที่นี่ เลือกขนาดเซลล์ที่สามารถจัดการค่า 3 * (n + 1) ดังนั้นสำหรับกรณีทดสอบทั้งหมดให้ทำงานเลือก 16หน่วยความจำแบบไดนามิก (ไม่ จำกัด )จะต้องเปิดใช้งานเพื่อให้การทำงานนี้ ซึ่งช่วยให้เทปขยายไปทางซ้าย หากต้องการใส่จำนวนเต็มให้พิมพ์ค่าที่ต้องการ\366สำหรับ n = 366

Ungolfed:

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

,+ # n = n plus 1
>+++ # 3
[>>+<<-]>>[<<<[>+>+<<-]>>[<<+>>-]>-] # n = n*3
<+++++++++++ # 10
<[>>+<<-]>>[<[>>+>+<<<-]>>>[<<<+>>>-]<[>+<<-[>>[-]>+<<<-]>>>[<<<+>>>-]<[<-[<<<->>>[-]]+>-]<-]<<<+>>] # n = n/10
<[-]+<[>-]>[<+>->] # if (n == 0) { n = n plus 1 }
++++++[<+++++++++>-] # '6' (54)
<<<[-]++++++++++> # 10
[ # while (n above 0)
  >.< # print '6'
  [<<+>>-]<<[>[<<+<+>>>-]<<<[>>>+<<<-]>[<+>>-[<<[-]<+>>>-]<<<[>>>+<<<-]>[>-[>>>-<<<[-]]+<-]>-]>>>+<<]>> # n = n/10
]

แน่นอนn=n*3สามารถแข็งแรงเล่นกอล์ฟเพื่อสิ่งที่ต้องการ[->+++<]? และอัลกอริทึม divmodจะหารด้วย 10?
Jo King

134 ไบต์ซึ่งสามารถปรับปรุงเพิ่มเติมได้
โจคิง

@ โจ้กกิ้งคุณต้องใช้อัลกอริธึมที่ไม่ห่อหุ้มเพื่อรองรับกรณีทดสอบที่มีขนาดใหญ่กว่าดังนั้นโซลูชันของคุณจึงใช้งานไม่ได้ มีเหตุผลที่ฉันไม่ได้ใช้ TIO
mbomb007

โอ๊ะฉันจะลบส่วนที่ห่อซึ่งเป็นเพียงหมายเลขเท่านั้น 140 ไบต์ (TIO เพราะง่ายต่อการให้รหัส) (EOF = 0)
Jo King



0

C #, 102 ไบต์

string a(int j,int k=0)=>(j+"|"+(k=k==0?j:k)).Split('|').Where(s=>s.All(c=>c=='6')).Max()??a(j+1,k-1);

Kinda ผิดหวังในความยาวของสิ่งนี้สามารถทำได้เหมือนกับคำตอบสั้น ๆ ใน Java แต่ฉันไม่เข้าใจจริงๆเพราะฉันเป็นคนขี้เกียจพัฒนาโง่. :)

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