หมายเลขกริฟฟิน Nth


26

ฉันได้ตัวเลขมาหลายชุดในวันก่อนและตัดสินใจตรวจสอบหมายเลข OEIS แปลกใจมากที่ลำดับไม่ปรากฏอยู่ในฐานข้อมูล OEIS ดังนั้นฉันจึงตัดสินใจตั้งชื่อลำดับหลังจากตัวเอง (โปรดทราบว่ามีคนที่ฉลาดกว่าฉันมากอาจเกิดขึ้นกับเรื่องนี้และถ้ามีคนพบ ชื่อจริงของลำดับนี้โปรดแสดงความคิดเห็นและฉันจะเปลี่ยนชื่อคำถาม) เนื่องจากฉันไม่สามารถหาลำดับได้ทุกที่ฉันจึงตัดสินใจตั้งชื่อตามตัวเองดังนั้น "Gryphon Numbers" แก้ไข: ขอบคุณ @Surb ที่ทำให้ฉันทราบถึงความจริงที่ว่าลำดับนี้มีค่าเท่ากับลำดับ OEIS A053696 - 1

หมายเลขกริฟฟอนคือตัวเลขของแบบฟอร์มโดยที่ทั้งและเป็นจำนวนเต็มมากกว่าหรือเท่ากับสองและลำดับกริฟฟอนเป็นชุดของหมายเลขกริฟอนทั้งหมดจากน้อยไปหามาก ใบสั่ง. หากมีหลายวิธีในการสร้างหมายเลข Gryphon (ตัวอย่างแรกคือซึ่งทั้งและ ) จำนวนจะถูกนับเพียงครั้งเดียวในลำดับ ครั้งแรกที่ตัวเลข Gryphon ไม่กี่:72a+a2+...+axax302+22+23+245+526,12,14,20,30,39,42,56,62,72

งานของคุณ:

เขียนโปรแกรมหรือฟังก์ชั่นที่รับจำนวนเต็มเป็นอินพุทและส่งออกหมายเลขกริฟฟอนที่ nn

การป้อนข้อมูล:

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

เอาท์พุท:

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

กรณีทดสอบ:

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

Input:    Output:
0   --->  6
3   --->  20
4   --->  30
10  --->  84
99  --->  4692
9999 -->  87525380

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

นี่คือดังนั้นคะแนนต่ำสุดเป็นไบต์ชนะ


6
ลำดับ Gryphon เป็นA053696 - 1. ในคำอื่น ๆ A053696 เป็นลำดับที่เพิ่มขึ้นของตัวเลขของแบบฟอร์ม0 + 1 + ... + x a0+a1++ax
Surb

2
@ ระงับอานั่นเป็นเหตุผลที่ฉันไม่สามารถหาได้ ในกรณีนั้นฉันจะใส่ข้อมูลนั้นไว้ในการแก้ไข แต่เก็บคำถามที่เหลือไว้ให้เป็นแบบเดิมเนื่องจากดูเหมือนจะไม่มีชื่อที่ดีกว่าสำหรับลำดับ
Gryphon - Reinstate Monica

คำตอบ:


15

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

bṖ’ḅi-µ#Ṫ

โปรแกรมเต็มรูปแบบที่อ่านจำนวนเต็ม (1 ดัชนี) จาก STDIN และพิมพ์ผลลัพธ์

ลองออนไลน์!

อย่างไร?

หมายเลข Gryphon เป็นตัวเลขที่สามารถแสดงได้ในฐานที่น้อยกว่าตัวมันเองซึ่งตัวเลขทั้งหมดนั้นเป็นตัวเลขยกเว้นค่านัยสำคัญที่น้อยที่สุดซึ่งเป็นศูนย์ ตัวอย่างเช่น:

30=1×24+1×23+1×22+1×21+0×20302=11110

84=1×43+1×42+1×41+0×40844=1110

โปรแกรมนี้ใช้เวลาnจากนั้นเริ่มต้นที่v=0และทดสอบคุณสมบัตินี้และเพิ่มขึ้นvจนกว่าจะพบnตัวเลขดังกล่าวแล้วส่งออกสุดท้าย

หากต้องการทดสอบbหมายเลขฐานมันจะลบหนึ่งหลักออกจากทุกหลักโดยแปลงจากฐานvแล้วตรวจสอบว่าผลลัพธ์คือ1หรือไม่ (โปรดทราบว่าbน้อยกว่าv)

3020×304+0×303+0×302+0×301+(1)×300=1

8440×843+0×842+0×841+(1)×840=1

bṖ’ḅi-µ#Ṫ - Main Link: no arguments
       #  - set v=0 then count up collecting n=STDIN matches of:
      µ   -  the monadic link -- i.e. f(v):  e.g. v=6
 Ṗ        -    pop (implicit range of v)            [1,2,3,4,5]
b         -    to base (vectorises)                 [[1,1,1,1,1,1],[1,1,0],[2,0],[1,2],[1,1]]
  ’       -    decrement (vectorises)               [[0,0,0,0,0,0],[0,0,-1],[1,-1],[0,1],[0,0]]
   ḅ      -    from base (v) (vectorises)           [0,-1,5,1,0]
     -    -    literal -1                           -1
    i     -    first index of (zero if not found)   2
          - }  e.g. n=11 -> [6,12,14,20,30,39,42,56,62,72,84]
        Ṫ - tail         -> 84
          - implicit print

11

MATL , 16 13 ไบต์

:Qtt!^Ys+uSG)

1-based

ลองออนไลน์!

คำอธิบาย

พิจารณาการป้อนข้อมูลn = 3เป็นตัวอย่าง

:    % Implicit input: n. Range
     % STACK: [1 2 3]
Q    % Add 1, element-wise
     % STACK: [2 3 4]
tt   % Duplicate twice, transpose
     % STACK: [2 3 4], [2 3 4], [2;
                                 3;
                                 4]
^    % Power, element-wise with broadcast
     % STACK: [2 3 4], [ 4   9  16;
                         8  27  64;
                        16  81 256]
Ys   % Cumulative sum of each column
     % STACK: [2 3 4], [ 4    9  16;
                         12  36  80;
                         28 117 336]
+    % Add, element-wise with broadcast (*)
     % STACK: [ 6  12  20;
               14  39  84
               30 120 340]
u    % Unique elements. Gives a column vector
     % STACK: [  6;
                14;
                30;
                12;
               ···
               340]
S    % Sort
     % STACK: [  6;
                12
                14;
                20;
               ···
               340]
G)   % Push input again, index. This gets the n-th element. Implicit display
     % STACK: 14

เมทริกซ์ที่ได้รับในขั้นตอน (*) อาจมีหมายเลขกริฟฟอนซ้ำ ๆ โดยเฉพาะอย่างยิ่งมันมีnหมายเลข Gryphon ที่แตกต่างกันในแถวแรก เหล่านี้ไม่จำเป็นต้องเป็นnตัวเลขกริฟฟินที่เล็กที่สุด อย่างไรก็ตามรายการซ้ายล่าง2+2^+···+2^n เกินรายการบนขวาn+n^2และทำให้ตัวเลขทั้งหมดในแถวสุดท้ายเกินกว่ารายการในแถวแรก นี่ก็หมายความว่าการขยายทางขวาเมทริกซ์หรือลงจะได้มีส่วนร่วมจำนวน Gryphon ใดต่ำกว่าต่ำสุดnตัวเลขในเมทริกซ์ ดังนั้นเมทริกซ์จึงรับประกันว่าจะมีnหมายเลข Gryphon ที่เล็กที่สุด ดังนั้นnองค์ประกอบที่เป็นเอกลักษณ์ต่ำสุดที่ -th คือการแก้ปัญหา


1
มันช่างน่าทึ่งจริงๆ!
IQuick 143

8

Haskell , 53 ไบต์

([n|n<-[6..],or[a^y+n==n*a+a|a<-[2..n],y<-[3..n]]]!!)

ลองออนไลน์!

จำนวนnเป็น Gryphon ถ้ามีอยู่ integers 2และx2ดังกล่าวที่n = Σ x ฉัน= 1ฉันa2x2n=i=1xai

เราสร้างรายการที่ไม่มีที่สิ้นสุดของทุกn6ดังกล่าวที่แรงเดรัจฉานแสดงให้เห็นว่าการค้นหาเป็นกรณีนี้

คำตอบคือ (ศูนย์จัดทำดัชนี) ฟังก์ชั่นดัชนีลงในรายการนี้แสดงใน Haskell (list!!)เป็น

ทำไมa^y+n==n*a+aถูกต้อง?

จากสูตรสำหรับการสรุปความก้าวหน้าทางเรขาคณิต :

i=1ναρi1=α(1ρν)1ρ

เรามีให้(α,ρ,ν)=(a,a,x) :

n=i=1xai=a(1ax)1a=aax+11a.

การจัดเรียงสมการที่เราได้รับn(1a)=aax+1 1

จัดว่ายิ่งเราได้รับx + 1 + n = n +ax+1+n=na+a

ใบแทนy=x+1a^y+n=n*a+aในการค้นหาแรงเดรัจฉานอัตราผลตอบแทนการแสดงออกสุดท้าย

ค้นหาจนnเพียงพอหรือไม่

  • หาก> n (ในคำอื่น ๆn + 1 ) แล้วY + n > 2( n + 1 ) = n + ซึ่งพิสูจน์Y + nn + ดังนั้นจึงมีความรู้สึกการตรวจสอบค่าใด ๆ ไม่มี> na>nan+1

    ay+n>a2(n+1)a=na+a
    ay+nna+aa>n

  • ในทำนองเดียวกันถ้าy>nแล้วY + n > n = n - 12 n - 1 * > ( n + 1 ) = n + , ครั้งที่พิสูจน์Y + nn + a .

    ay+n>an=an1a2n1a>(n+1)a=na+a,
    ay+nna+a

    เราสามารถสันนิษฐานได้2n1>n+1เพราะเรารู้ว่าn6ซึ่งเป็นหมายเลขกริฟฟอนที่เล็กที่สุด


7

Python 3.8 (เผยแพร่ล่วงหน้า) , 98 92 89 78 71 ไบต์

lambda n:sorted({a*~-a**x//~-a for a in(r:=range(2,n+3))for x in r})[n]

ลองออนไลน์!

0 การจัดทำดัชนี ต้องใช้การหารจำนวนเต็มที่นี่เนื่องจาก f (10000) ล้นล้น

2an+22xn+2n

-6 ไบต์ขอบคุณ Jonathan Allan

-3 ไบต์ขอบคุณ ArBo ฉันเกือบทำตามที่เขาแนะนำตัวเอง แต่พยายามใช้{*(...)}ซึ่งไม่ได้ประหยัดพื้นที่

-11 ไบต์ขอบคุณ mathmandan

-7 ไบต์ขอบคุณ ArBo

การพิสูจน์ความถูกต้องทางคณิตศาสตร์

การใช้การจัดทำดัชนี 0 เพื่อประโยชน์ในการพิสูจน์นี้แม้ว่าการประชุมทางคณิตศาสตร์จะได้รับการจัดทำดัชนี 1

  • Gnn
  • g(a,x)=a+a2+...+axax
  • An2an+22xn+2
  • A0={g(2,2)}={6}={G0}
  • An+1={g(a,x),g(a+1,x),g(a,x+1),g(a+1,x+1)|g(a,x)An}
  • g(a+1,x)<g(a+1,x+1)ax
  • g(a,x+1)<g(a+1,x+1)ax
  • Gn+1g(a+1,x+1)Gn=g(a,x)
  • g(a+1,x)<g(a+2,x)ax
  • g(a,x+1)<g(a,x+2)ax
  • Gn+1g(a+1,x)g(a,x+1)Gn=g(a,x)
  • Gn+1An+1GnAn
  • G0A0GnAnn
  • G0GnGnnAnAn

f=ไม่จำเป็นและlambda n,r=range:จะช่วยเพิ่มอีก 4 ( เช่นนั้น )
Jonathan Allan

คุณสามารถวางset()และแทนที่ด้วยชุดความเข้าใจเพื่อไปที่89
ArBo

นอกจากนี้คุณสามารถลบf=ลิงก์ออกจากลิงก์ TIO โดยใส่ไว้ในส่วนหัวเช่นเดียวกับใน TIO ของ 89 byter ของฉัน
ArBo

86 ไบต์พร้อม Python 3.8 และนิพจน์ที่กำหนด
ovs

ที่บรรทัด "ดังนั้น Gn + 1 ≠ (a + 1, x + 1) ถ้า Gn = g (a, x)" เป็นข้อผิดพลาดมันควรจะเป็น Gn + 1 ≠ g (a + 1, x + 1) ถ้า ...
IQuick 143

5

J , 35 32 ไบต์

-3 ไบต์ขอบคุณ FrownyFrog

3 :'y{/:~~.,}.+/\(^~/>:)1+i.y+2'

ลองออนไลน์!

คำอธิบายเหมือนกับต้นฉบับ @เพียงแค่ใช้รูปแบบที่ชัดเจนในการบันทึกไบต์ถูกลบหลาย

คำตอบเดิมโดยนัยโดยมีคำอธิบาย: 35 ไบต์

{[:/:~@~.@,@}.[:+/\@(^~/>:)1+i.@+&2

ลองออนไลน์!

เช่นเดียวกับวิธีการของ Luis Mendo เราสร้าง "ตารางอำนาจ" (เช่นตารางเวลา) ด้วยแถวบน2 3 ... nและคอลัมน์ซ้าย1 2 ... nทำให้:

 2   3    4     5     6      7
 4   9   16    25    36     49
 8  27   64   125   216    343
16  81  256   625  1296   2401
32 243 1024  3125  7776  16807
64 729 4096 15625 46656 117649

^~/ >:สร้างตารางและ1+i.@+&2สร้าง1... nลำดับและเราเพิ่ม 2 ( +&2) ลงในอินพุตเพื่อให้แน่ใจว่าเรามีองค์ประกอบเพียงพอที่จะสร้างตารางเสมอสำหรับ 0 หรือ 1 อินพุต

หลังจากที่เรามีตารางด้านบนวิธีแก้ปัญหาเล็กน้อย เราเพียงแค่สแกนรวมแถวและเอาแถวแรกแผ่ใช้ไม่ซ้ำกันและการจัดเรียง+/\ /:~@~.@,@}.ในที่สุด{ใช้อินพุทดั้งเดิมเพื่อจัดทำดัชนีในผลลัพธ์นั้นโดยสร้างคำตอบ


สัญลักษณ์ชัดเจนบันทึก 3
FrownyFrog

ขอบคุณที่จับได้ดี
โยนาห์

3

Gaiaขนาด 18 ไบต์

)┅:1D¤*‡+⊣¦tv<_uȯE

ลองออนไลน์!

ดัชนีแบบ 1

นี่เป็นคำตอบที่ค่อนข้างเศร้าสำหรับจมูกที่ยาว: )┅:มันอาจจะหวังว่ามันจะสามารถเล่นกอล์ฟต่อไปได้

คัดลอกอัลกอริทึมที่กำหนดโดยคำตอบของ Luis Mendo


3

R , 65 62 ไบต์

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

n=scan();unique(sort(diffinv(t(outer(2:n,1:n,"^")))[3:n,]))[n]

ลองออนไลน์!

1 การจัดทำดัชนี

aix=1

โปรดทราบว่าsort(unique(...))จะไม่ทำงานเหมือนuniqueจะให้แถวที่ไม่ซ้ำกันของเมทริกซ์และไม่ใช่รายการที่ไม่ซ้ำกัน การใช้unique(sort(...))ผลงานเพราะsortแปลงเป็นเวกเตอร์


ใช้งานได้อีกเล็กน้อย แต่ใช้งานtและdiffinvเป็น64 ไบต์
Giuseppe

1
@iuseppe ขอบคุณ! diffinvผมไม่ทราบว่า ผมแข็งแรงเล่นกอล์ฟลงอีก 2 ไบต์โดยการแทนที่ด้วย[-1:-2,] [3:n,]
Robin Ryder



1

ถ่าน , 36 ไบต์

NθFθFθ⊞υ÷⁻X⁺²ι⁺³κ⁺²ι⊕ιF⊖θ≔Φυ›κ⌊υυI⌊υ

ลองออนไลน์! การเชื่อมโยงคือการใช้รหัสเวอร์ชันอย่างละเอียด 1 การจัดทำดัชนี ใช้อัลกอริทึมของ Luis Mendo คำอธิบาย:

Nθ

n

FθFθ⊞υ

nn

÷⁻X⁺²ι⁺³κ⁺²ι⊕ι

1xai=ax+1aa1

F⊖θ≔Φυ›κ⌊υυ

n1

I⌊υ

พิมพ์หมายเลข Gryphon ที่ต่ำที่สุด


1

Japt 23 ไบต์

เรียน Jebus! ทั้งที่ฉันจริงๆได้ลืมวิธีการกอล์ฟหรือการดื่มเหล้าเป็นที่สุดการโทรของ!

ไม่ใช่ท่าเรือโดยตรงของทางออกของโจนาธาน แต่ได้แรงบันดาลใจมาจากการสังเกต

@ÈÇXìZ mÉ ìZÃeÄ}fXÄ}gNÅ

ลองมัน


1

05AB1E , 12 ไบต์

L¦ãε`LmO}êIè

0 การจัดทำดัชนี

ลองออนไลน์หรือตรวจสอบแรกnรายการ

คำอธิบาย:

L             # Create a list in the range [1, (implicit) input-integer]
              #  i.e. 4 → [1,2,3,4]
 ¦            # Remove the first item to make the range [2, input-integer]
              #  i.e. [1,2,3,4] → [2,3,4]
  ã           # Create each possible pair of this list by using the cartesian product
              #  i.e. [2,3,4] → [[2,2],[2,3],[2,4],[3,2],[3,3],[3,4],[4,2],[4,3],[4,4]]
   ε          # Map each pair to:
    `         #  Push the values of the pair separately to the stack
              #   i.e. [4,3] → 4 and 3
     L        #  Take the list [1, value] for the second value of the two
              #   i.e. 3 → [1,2,3]
      m       #  And then take the first value to the power of each integer in this list
              #   i.e. 4 and [1,2,3] → [4,16,64]
       O      #  After which we sum the list
              #   i.e. [4,16,64] → 84
            # After the map: uniquify and sort the values
              #  i.e. [6,14,30,12,39,120,20,84,340] → [6,12,14,20,30,39,84,120,340]
          Iè  # And index the input-integer into it
              #  i.e. [6,12,14,20,30,39,84,120,340] and 4 → 30
              # (after which the result is output implicitly)
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.