หมายเลขเลย์แลนด์


37

รับจำนวนธรรมชาติn, กลับn-th จำนวนเลย์

หมายเลขเลย์แลนด์

ตัวเลขเลย์แลนด์เป็นจำนวนเต็มบวกkของแบบฟอร์ม

k = x^y + y^x

x,yจำนวนเต็มที่อยู่ที่ไหนอย่างเข้มงวดมากกว่า 1

พวกเขาจะระบุตามลำดับจากน้อยไปมาก

แก้ไข: @DigitalTrauma แนะนำฉันรวมต่อไปนี้ "คำจำกัดความ":

ลองนึกภาพเราโยนx^y+y^xถุงสำหรับค่าที่เป็นไปได้ทั้งหมดxและyและหลีกเลี่ยงการโยนซ้ำ จากนั้นเราจัดเรียงกระเป๋าใบนั้น ถุงเรียงเป็นลำดับของเรา

รายละเอียด

คุณอาจใช้การจัดทำดัชนีตาม 0 หรือ 1 สิ่งที่เหมาะกับคุณที่สุด

โปรแกรมของคุณจะต้องสามารถส่งออกอย่างน้อยทุกหมายเลข Leyland น้อยกว่าจำนวนเต็ม 32 บิตที่ลงนามสูงสุด (หมายเลข Leyland สุดท้ายที่ต่ำกว่าขีด จำกัด นี้คือ1996813914ที่ดัชนี82)

กรณีทดสอบ

คำศัพท์สองสามคำแรกมีดังต่อไปนี้:

8, 17, 32, 54, 57, 100, 145, 177, 320, 368, 512, 593, 945, 1124

A076980ใน OEIS ยกเว้นรายการแรก โปรดทราบว่าเนื่องจากรายการแรกเพิ่มเติมนั้นดัชนีบน OEIS จะถูกเลื่อนไปทีละรายการ

พบมากขึ้นในOEIS b- ไฟล์


They are enumerated in ascending orderฉันไม่แน่ใจจริงๆ คุณสามารถให้รายการ x และ y ได้ไหม
DJMcMayhem

@DrGreenEggsandIronMan นั่นหมายความว่า8ก่อนหน้า17นี้ไม่ใช่รอบอื่น ๆ
Leun Nun

3
@DrGreenEggsandIronMan ลองนึกภาพเราโยนx^y+y^xในกระเป๋าสำหรับค่าที่เป็นไปได้ทั้งหมดxและyและหลีกเลี่ยงการผลักดันซ้ำซ้อน จากนั้นเราจัดเรียงกระเป๋าใบนั้น ถุงเรียงเป็นลำดับของเรา
ข้อบกพร่อง

10
กระเป๋าขนาดใหญ่มากที่คุณต้องมี
หลุยส์ Mendo

2
@LuisMendo Ask @ HenriLéonLebesgueแล้วเขาจะบอกคุณว่ากระเป๋าใบนี้ไม่มีอะไรเลย
ข้อบกพร่อง

คำตอบ:


11

MATL , 16 15 13 ไบต์

Q:Qt!^t!+uSG)

เอาท์พุทเป็นแบบ 1

ลองออนไลน์!

คำอธิบาย

Q    % Take input n. Add 1
:Q   % Range [2 ... n+1]. This is enough to be used as x and y
t!   % Duplicate and transpose
^    % Power, element-wise with broadcast. Gives 2D, square array with x^y
     % for all pairs of x and y
t!   % Duplicate and transpose. Gives square array with y^x
+    % Add, element-wise
u    % Keep unique elements. This linearizes (flattens) the 2D array
S    % Sort
G)   % Get the n-th entry. Implicitly display

ใน Matlab จะuniqueเรียงลำดับองค์ประกอบ ไม่ได้อยู่ใน MATL ด้วยใช่ไหม
pajonk

1
@pajonk MATL ใช้การ'stable'ตั้งค่าสถานะเป็นuniqueค่าเริ่มต้นเนื่องจากเป็นการใช้งานทั่วไปมากขึ้น
Suever

@Suever Ok ขอบคุณสำหรับการชี้แจง
pajonk

1
ฉันรู้สึกเหมือนเราใช้t!^(ที่^จะถูกแทนที่ด้วย+, -หรือหมายเลขใด ๆ ของผู้ประกอบการ) และลายมาก ถ้าเราทำ&ค่าเฉลี่ย 1 อินพุตสำหรับบางอันที่เวกเตอร์มีพฤติกรรมนั้น
Suever

@ Suever นั่นเป็นความคิดที่ยอดเยี่ยม! ฉันได้ทำการค้นคว้าด้วยสคริปต์ของคุณแล้ว ดูการแชท
Luis Mendo

5

Haskell, 52 ไบต์

r=[2..31]
([k|k<-[0..],elem k[x^y+y^x|x<-r,y<-r]]!!)

ไม่มีประสิทธิภาพจริงๆ ทดสอบแต่ละหมายเลขธรรมชาติสำหรับการเป็นหมายเลข Leyland ทำให้รายการไม่มีที่สิ้นสุดของผู้ที่ รับอินพุตใช้องค์ประกอบดัชนีนั้นของรายการ ใช้ว่าx,yต้องมีการตรวจสอบมากถึง 31 สำหรับจำนวนเต็ม 32 บิต

ความยาวเดียวกันกับfilter:

r=[2..31]
(filter(`elem`[x^y+y^x|x<-r,y<-r])[0..]!!)

เมื่อเข้าใจถึงวิธีแก้ปัญหาที่ชัดเจนฉันชอบมันมาก!
ข้อบกพร่อง

5

Java 8, 225 221 219 216 206 204 193 192 ไบต์

import java.util.*;n->{List<Long>t=new Stack();for(long i=1,j,s;++i<30;)for(j=1;++j<30;){s=(int)(Math.pow(i,j)+Math.pow(j,i));if(!t.contains(s))t.add(s);}Collections.sort(t);return t.get(n);}

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

-2 ไบต์ (221 → 219) บันทึกไว้โดยการแทนที่1996813915ด้วย(1L<<31)ต้องขอบคุณ@LeakyNun
-3 ไบต์ (219 → 216) ต้องขอบคุณ@LeakyNunและ@Froznด้วยบางอย่างที่ฉันลืมตัวเอง ..
-10 ไบต์ (216 → 206) โดยเปลี่ยน Java 7 เป็น 8
-2 ไบต์ (206 → 204) โดยแทนที่ArrayListด้วยVectorขอบคุณ@TAsk
-11 ไบต์ (204 → 193) โดยลบs<(1L<<31)&เนื่องจากคำถามระบุว่า " อย่างน้อยตัวเลข Leyland ทั้งหมดน้อยกว่าจำนวนเต็ม 32 บิตที่ลงนาม "
-1 ไบต์ (193 → 192) โดยการเปลี่ยนไปVectorStack

คำอธิบาย:

ลองที่นี่

import java.util.*;            // Required import for Stack
n->{                           // Method with integer parameter and long return-type
  List<Long>t=new Stack();     //  Temp list
  for(long i=1,j,s;++i<30;)    //  Loop (1) from 2 to 30 (exclusive)
    for(j=1;++j<30;){          //   Inner loop (2) from 2 to 30 (exclusive)
      s=(int)(                 //    `s` is:
         Math.pow(i,j)+Math.pow(j,i)); // i^j + j^i
      if(!t.contains(s))       //     If `s` is not already part of the List
        t.add(s);              //      Add it to the List
    }                          //   End of inner loop (2)
                               //  End of loop (1) (implicit / single-line body)
  Collections.sort(t);         //  Order the List
  return t.get(n);             //  Return the item at the given index
}                              // End of method

2
10/10 สำหรับการใช้ java
Leaky Nun

เนื่องจากคุณต้องการการสนับสนุนสูงถึง2^31-1(เช่นเซ็นชื่อ int) คุณไม่สามารถสลับกลุ่มของlongนักแสดงได้หรือไม่
AdmBorkBork

1
สนามกอล์ฟด่วน:import java.util.*;long c(int n){List<Long>t=new ArrayList();for(int i=2,j;i<25;i++)for(j=2;j<25;j++){long s=(long)(Math.pow(i,j)+Math.pow(j,i));if(s<(1L<<31)&!t.contains(s))t.add(s);}Collections.sort(t);return t.get(n);}
รั่วแม่ชี

1
การประกาศตัวแปรลูป
Leun Nun

1
วิธีการเกี่ยวกับfor (int i = 1, j; ++i < 30;)และfor (j = 1; ++j < 30;)
Frozn

4

Pyth, 17 ไบต์

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

@{Sms^M_Bd^}2+2Q2

ลองออนไลน์! (โปรดเก็บไว้ที่ 100. )

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

@{Sms^M_Bd^}2+2Q2
@{Sms^M_Bd^}2+2Q2Q  implicit filling. Input:Q

           }2+2Q    Yield the array [2,3,4,...,Q+2]
          ^     2   Cartesian square: yield all the
                    pairs formed by the above array.
   m     d          Map the following to all of those pairs (e.g. [2,3]):
       _B               Create [[2,3],[3,2]]
     ^M                 Reduce by exponent to each array:
                        create [8,9]
    s                   Sum:   17     (Leyland number generated)
  S                 Sort the generated numbers
 {                  Remove duplicate
@                Q  Find the Q-th element.

รุ่นที่ช้ากว่า

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

e.ffqZs^M_BT^}2Z2

ลองออนไลน์! (โปรดเก็บไว้ที่ 3)


มันจะช่วยสร้างอาเรย์แห่งพลัง [[4,8, ... ] [9,27, ... ]] และเพิ่มลงในทรานสโพสได้ไหม?
Neil

@ ไม่มีฉันไม่คิดอย่างนั้น มันจะมีประโยชน์ในเยลลี่ แต่ไม่ใช่ในพี ธ Pyth ไม่ปรับเวกเตอร์อัตโนมัติ
Leun Nun

นอกจากนี้ยังช่วยใน MATL ดูเหมือนว่า
Neil

ทำไมคุณถึงช้าลงเรื่อย ๆ ?
Erik the Outgolfer

4

MATLAB, 58 ไบต์

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

n=input('');[A B]=ndgrid(2:n+9);k=A.^B;x=unique(k'+k);x(n)

unique ใน MATLAB จะเรียบและจัดเรียงเมทริกซ์


ขอบคุณสำหรับความช่วยเหลือที่จะ@FryAmTheEggmanและ@flawr


3

05AB1E, 20 19 ไบต์

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

ÝÌ2ãvyÂ`ms`m+}){Ù¹è

อธิบาย

ÝÌ                     # range(2,N+2)
  2ã                   # get all pairs of numbers in the range
    v                  # for each pair
     yÂ`ms`m+          # push x^y+y^x
             }         # end loop
              ){Ù      # wrap to list, sort and remove duplicates
                 ¹è    # get Nth element of list

ลองออนไลน์

บันทึกแล้ว 1 ไบต์ขอบคุณ @Adnan


ดีมาก! หนึ่งเคล็ดลับÝÌย่อมา>L>จาก
Adnan

@Adnan: ขอบคุณ! ฉันไม่สามารถเชื่อได้ฉันไม่คิดอย่างนั้น: P
Emigna

êถูก sort_uniquified หากมีอยู่เมื่อถูกถาม
Magic Octopus Urn

@carusocomputing: มันบั๊กจนไม่นานฉันก็กลัว
Emigna

3

Mathematica, 60 48 40 ไบต์

(Union@@Array[#^#2+#2^#&,{#,#},2])[[#]]&

ใช้การจัดทำดัชนีแบบอิงฐานเดียว Unionถูกนำมาใช้โดยการใช้ระหว่างแถวของเมทริกซ์ 2D Arrayแต่ละที่สร้างขึ้นโดย ที่นั่นUnionจะทำให้เมทริกซ์ 2D แบนลงในรายการขณะเดียวกันก็ลบรายการที่ซ้ำกันออกและวางค่าตามลำดับที่เรียงลำดับ

ที่บันทึกไว้ 8 ไบต์ขอบคุณที่ @ LLlAMnYP

การใช้

ตัวอย่าง


{#+1,#+1}ไม่จำเป็นสามารถด้านซ้ายเป็น{#,#}และสามารถถูกแทนที่ด้วยเพียง{2,2} 2
LLlAMnYP

@LLlAMnYP ขอบคุณ! ไม่ทราบว่าArrayจะขยายอาร์กิวเมนต์ที่สาม
ไมล์

ฉันก็ไม่ได้ แต่ฉันตัดสินใจที่จะลองต่อไปและมันก็ใช้งานได้ :)
LLlAMnYP

2

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

2 ไบต์ขอบคุณเดนนิส

R‘*€¹$+Z$FṢQị@

ลองออนไลน์! (ใช้เวลา 1 ~ สำหรับ 82 สำหรับฉัน) เวลา (O (n ^ 2))

คำตอบ 16 ไบต์ดั้งเดิม

2r30*€¹$+Z$FṢQị@

ลองออนไลน์! (ใช้เวลา <1 วินาทีสำหรับฉัน) (เวลาคงที่)


R‘*€¹$+Z$FṢQị@เร็วขึ้นสั้นลงและไม่มีข้อผูกมัดด้านบนเทียม
Dennis

@Dennis และเต้นคำตอบของฉัน :-P
Luis Mendo

@Dennis ฉันไม่เข้าใจ ทำไมมันถึงเร็วกว่าอันที่สอง
Leun Nun

มันไม่เร็วกว่าอันที่สอง เวลาดำเนินการสั้นเกินไปสำหรับการวัดที่แม่นยำ
Dennis

ตอนนี้ 13 ไบต์ :-P
Luis Mendo

2

ยูทิลิตี Bash + GNU, 63

printf %s\\n x={2..32}\;y={2..32}\;x^y+y^x|bc|sort -nu|sed $1!d

การจัดทำดัชนีแบบ 1 ลักษณะเช่นนี้จะสวยมากวิธีการเดียวกับ@ คำตอบของ แทนที่จะใช้ลูปซ้อนการขยาย bash brace ใช้เพื่อสร้างนิพจน์ทางคณิตศาสตร์ที่ถูกไพพ์ไปยังbcเพื่อการประเมินผล

Ideone


2

Perl 6 ,  60 58  56 ไบต์

{sort(keys bag [X[&({$^a**$^b+$b**$a})]] (2..$_+2)xx 2)[$_]}
{sort(keys set [X[&({$^a**$^b+$b**$a})]] (2..$_+2)xx 2)[$_]}
{sort(unique [X[&({$^a**$^b+$b**$a})]] (2..$_+2)xx 2)[$_]}
{squish(sort [X[&({$^a**$^b+$b**$a})]] (2..$_+2)xx 2)[$_]}
{squish(sort [X[&({$^a**$^b+$b**$a})]] (2..31)xx 2)[$_]}
{squish(sort [X[&({$^a**$^b+$b**$a})]] 2..31,2..31)[$_]}

ทดสอบ:

#! /usr/bin/env perl6
use v6.c;

my &Leyland = {squish(sort [X[&({$^a**$^b+$b**$a})]] 2..31,2..31)[$_]}

say ^14 .map: &Leyland;
time-this {Leyland 81};

sub time-this (&code) {
  my $start = now;
  my $value = code();
  printf "takes %.3f seconds to come up with $value\n", now - $start;
}
(8 17 32 54 57 100 145 177 320 368 512 593 945 1124)
takes 0.107 seconds to come up with 1996813914

คำอธิบาย:

{
  squish( # remove repeated values
    sort
      [X[&( # cross reduce with:
        { $^a ** $^b + $b ** $a }
      )]]
        ( 2 .. $_+2 ) # 「Range.new(2,$_+2)」 (inclusive range)
        xx 2          # repeat list
  )[$_]
}

คุณไม่สามารถลบช่องว่างระหว่างsort [และ] 2..31?
Erik the Outgolfer

@ EʀɪᴋᴛʜᴇGᴏʟғᴇʀที่จะเปิดจากสายย่อยที่จะเข้าถึงอาร์เรย์ของคำsort([... sort[...สิ่งที่คล้ายกันเกิดขึ้นกับพื้นที่อื่น
แบรดกิลเบิร์ต b2gills

2

F #, 117 , 104

Welp มันสั้นกว่าคำตอบ C # ของฉันอย่างน้อย

บันทึกแล้ว 13 ไบต์ขอบคุณ Reed Copsey ในห้องสนทนา F #

let f n=[for x in 2I..32I do for y in 2I..32I->x**(int y)+y**(int x)]|>Seq.sort|>Seq.distinct|>Seq.nth n

2

PowerShell v2 +, 84 73 68 ไบต์

(2..30|%{2..($x=$_)|%{"$x*"*$_+'1+'+"$_*"*$x+1|iex}}|sort)[$args[0]]

บันทึกแล้ว 11 ไบต์ด้วย @Neil ... บันทึกอีก 5 ไบต์ด้วยการจัดระเบียบวิธีiexการประเมินนิพจน์ใหม่

วิธีไร้เดียงสาเราก็สองครั้งสำหรับวงจากและx=2..30 y=2..xแต่ละวงที่เราใส่x^y + y^xไปป์ไลน์ The 30ถูกเลือกทดลองเพื่อให้แน่ใจว่าเราครอบคลุมทุกกรณีน้อยกว่า2^31-1;-) เราไปป์เหล่านั้นSort-Objectเพื่อสั่งให้ขึ้น $args[0]เอาท์พุทเป็นศูนย์การจัดทำดัชนีอยู่บนพื้นฐานของการป้อนข้อมูล

ใช่มีรายการที่ไม่เกี่ยวข้องจำนวนมากที่สร้างขึ้นที่นี่ - อัลกอริทึมนี้สร้างหมายเลขเลย์แลนด์ 435 - แต่สิ่งข้างต้นดัชนี81ไม่รับประกันว่าถูกต้องและเป็นระเบียบ (อาจมีบางอย่างที่ข้าม)

ตัวอย่าง

PS C:\Tools\Scripts\golfing> .\leyland-numbers.ps1 54
14352282

PS C:\Tools\Scripts\golfing> .\leyland-numbers.ps1 33
178478

PS C:\Tools\Scripts\golfing> .\leyland-numbers.ps1 77
1073792449

2

R, 58 54 ไบต์

1 การจัดทำดัชนี ตัดออก 4 ไบต์โดยใช้แทนpryr::rfunction

unique(sort(outer(2:99,2:9,pryr::f(x^y+y^x))))[scan()]

คำอธิบาย

สำหรับตัวเลขทั้งหมดตั้งแต่ 2 ถึง 99 และ 2 ถึง 9

                  2:99,2:9

x^y+y^xใช้ฟังก์ชั่น สิ่งนี้สร้างเมทริกซ์ 98x8

            outer(2:99,2:9,pryr::f(x^y+y^x))

จัดเรียงเมทริกซ์นี้ (บังคับให้เป็นเวกเตอร์):

       sort(outer(2:99,2:9,pryr::f(x^y+y^x)))

ลบค่าที่ไม่ซ้ำทั้งหมด:

unique(sort(outer(2:99,2:9,pryr::f(x^y+y^x))))

อ่านnจาก stdin และดึงnหมายเลข th จากรายการ:

unique(sort(outer(2:99,2:9,pryr::f(x^y+y^x))))[scan()]

2

JavaScript (Firefox 42-57), 94 ไบต์

n=>[for(x of Array(32).keys())for(y of Array(x+1).keys())if(y>1)x**y+y**x].sort((x,y)=>x-y)[n]

ความต้องการของ Firefox 42 เพราะมันใช้ทั้ง comprehensions อาร์เรย์และการยกกำลัง ( [for(..of..)]และ**)


คุณไม่ควรทำเครื่องหมายว่าเป็น ES7 หรือ
mbomb007

@ mbomb007 ฉันไม่คิดว่า[for...of]เป็น ES7
Neil


ไม่มีที่ไม่for(..of..) [for(..of..)]
Neil


1

Haskell, 99 98 96 95 94 ไบต์

มันอาจจะโตได้ง่าย แต่นั่นก็เป็นสิ่งที่ดีที่สุดที่ฉันสามารถทำได้

import Data.List
f n|n<2=[]|n>1=sort.nub$f(n-1)++[x^n+n^x|x<-[2..n]]
g n=(f.toInteger$n+3)!!n

นำเข้า Data.List fn | w <- [2..toEnum $ n + 3] = (เรียงลำดับ $ nub [x ^ y + y ^ x | x <-w, y <-w]) !! คุณรู้หรือไม่ ทำไมถึงจำเป็นต้องใช้ Ineger / toEnum
ดาเมียน

ว้าวนี่มันบ้ามาก =) อย่าลังเลที่จะเพิ่มมันเป็นคำตอบของคุณเองเพราะมันต่างจาก qutie! หากเราข้ามtoIntegerวิธีการแก้ปัญหาของฉันเราจะมีการใช้intมากเกินเพราะเราทำซ้ำวิธีที่สูงกว่า (ไปn+3แทนn) เมื่อทำงานกับรายการ มิฉะนั้นเราจะต้องใส่รหัสสี่คำแรกลงไป ไม่ว่าสิ่งที่toEnumทำในการแก้ปัญหาของคุณหรือไม่
ข้อผิดพลาด

ตกลงนั่นเป็นเพราะตัวดำเนินการ (!!) ซึ่งผูก n กับ Int เมื่อ n ควรจะเป็นภายใต้ 82 w, จะถูกแทนที่ด้วย [2..99] f=(sort(nub[x^y+y^x|x<-[2..99],y<-[2..x]])!!)ตัวอย่างและ toEnumแปลง Int เป็น Enum และ Integer เป็นตัวอย่างของ Enum class ดังนั้น ToEnum ที่นี่จะแปลง n + 3 เป็น Integer
Damien


1

C #, 141 , 127 bytes

โอ้ c # คุณเป็นภาษาที่ยาวมาก

n=>(from x in Enumerable.Range(2,32)from y in Enumerable.Range(2,32)select Math.Pow(x,y)+Math.Pow(y,x)).Distinct().ToList()[n];

นี่คือแลมบ์ดาที่ต้องได้รับมอบหมายให้delegate double del(int n);ทำงานเช่น:

delegate double del(int n);
del f=n=>(from x in Enumerable.Range(2,32)from y in Enumerable.Range(2,32)select Math.Pow(x,y)+Math.Pow(y,x)).OrderBy(q=>q).Distinct().ToList()[n];

1
ยังคงสั้นกว่าJava
ข้อผิดพลาด

@flawr Wooooooo?
Morgan Thrapp

ฉันไม่รู้อะไรเกี่ยวกับ C # แต่คุณไม่สามารถบันทึกEnumerable.Range(ลงในตัวแปร / function / iterator / อะไรก็ตามที่มีชื่อที่สั้นกว่าสำหรับ reuisng?
ข้อบกพร่อง

ฉันทำได้ แต่แล้วฉันต้องรวมคลาสและประเภท defs ซึ่งจบลงด้วยการคิดต้นทุนตัน
Morgan Thrapp

1

SQL (PostgreSQL 9.4), 171 ไบต์

ทำตามคำสั่งที่เตรียมไว้ สร้างคู่ของชุดที่ 2 - 99, ข้ามเข้าร่วมพวกเขาและทำสมการ จัดอันดับผลลัพธ์อย่างหนาแน่นเพื่อจัดทำดัชนีและเลือกผลลัพธ์แรกที่มีอันดับของอินพุตจำนวนเต็ม

prepare l(int)as select s from(select dense_rank()over(order by s)r,s from(select x^y+y^x from generate_series(2,99)x(x),generate_series(2,99)y(y))c(s))d where r=$1limit 1

ดำเนินการดังนี้

execute l(82)
s
-----------------
1996813914

การทำงานนี้จบลงเร็วกว่าที่ฉันคาดไว้มาก


1

J, 29 ไบต์

<:{[:/:~@~.@,[:(^+^~)"0/~2+i.

ใช้การจัดทำดัชนีแบบอิงฐานเดียว การแปลงจาก Mathematica ของฉันวิธีการแก้ปัญหา

ความลับที่แท้จริงที่นี่คือฉันมี:(^+^~)ในด้านของฉัน

การใช้

   f =: <:{[:/:~@~.@,[:(^+^~)"0/~2+i.
   f 7
145
   (,.f"0) >: i. 10  NB. Extra commands for formatting
 1   8
 2  17
 3  32
 4  54
 5  57
 6 100
 7 145
 8 177
 9 320
10 368

คำอธิบาย

<:{[:/:~@~.@,[:(^+^~)"0/~2+i.  Input: n
                         2+i.  Step one
                     "0/~      Step two
              :(^+^~)          ???
<:{[:/:~@~.@,[                 Profit

จริงจังมากขึ้น

<:{[:/:~@~.@,[:(^+^~)"0/~2+i.  Input: n
                           i.  Create the range [0, 1, ..., n-1]
                         2+    Add 2 to each
               (^+^~)"0        Create a dyad (2 argument function) with inputs x, y
                               and returns x^y + y^x
             [:        /~      Use that function to create a table using the previous range
   [:       ,                  Flatten the table into a list
         ~.@                   Take its distinct values only
     /:~@                      Sort it in ascending order
<:                             Decrement n (since J is zero-indexed)
  {                            Select the value at index n-1 from the list and return

... กำไร : D
ข้อผิดพลาด

1

สวิฟท์ 3, 138 ไบต์

import Glibc;func l(n:Int)->Int{let r=stride(from:2.0,to:50,by:1);return Int(Set(r.flatMap{x in r.map{pow(x,$0)+pow($0,x)}}).sorted()[n])}

รหัสไม่ได้รับการตอบ

ลองที่นี่

import Glibc
func l(n: Int) -> Int {
    // Create a Double sequence from 2 to 50 (because pow requires Double)
    let r = stride(from: 2.0, to: 50.0, by: 1.0)

    return Int(Set(r.flatMap {
        x in r.map {
            pow(x, $0) + pow($0, x)
        }
    }).sorted()[n])

1
ยินดีต้อนรับสู่การเขียนโปรแกรมปริศนาและรหัสกอล์ฟ! คำตอบแรกที่ดี แต่มันจะดีกว่าถ้าคุณสามารถอธิบายสิ่งที่เกิดขึ้น
clismique

1

ความจริง 148 ไบต์

w(n)==(v:List INT:=[];for i in 2..31 repeat for j in i..31 repeat(a:=i^j+j^i;if a>1996813914 then break;v:=cons(a,v));v:=sort v;~index?(n,v)=>0;v.n)

ตัวอย่างบางส่วน

w(n)==
 v:List INT:=[];for i in 2..31 repeat for j in i..31 repeat
        (a:=i^j+j^i;if a>1996813914 then break;v:=cons(a,v));v:=sort v;~index?(n,v)=>0
 v.n
 (2) -> [w(i)  for i in 0..85]
    Compiling function w with type NonNegativeInteger -> Integer

    (2)
    [0, 8, 17, 32, 54, 57, 100, 145, 177, 320, 368, 512, 593, 945, 1124, 1649,
     2169, 2530, 4240, 5392, 6250, 7073, 8361, 16580, 18785, 20412, 23401,
     32993, 60049, 65792, 69632, 93312, 94932, 131361, 178478, 262468, 268705,
     397585, 423393, 524649, 533169, 1048976, 1058576, 1596520, 1647086,
     1941760, 2012174, 2097593, 4194788, 4208945, 4785713, 7861953, 8389137,
     9865625, 10609137, 14352282, 16777792, 16797952, 33554432, 33555057,
     43050817, 45136576, 48989176, 61466176, 67109540, 67137425, 129145076,
     134218457, 177264449, 244389457, 268436240, 268473872, 292475249,
     364568617, 387426321, 536871753, 774840978, 1073742724, 1073792449,
     1162268326, 1173741824, 1221074418, 1996813914, 0, 0, 0]

ประเภท: List Integer





0

Java, 200 197 ไบต์

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

n->{long[]t=new long[999];for(int i=1,j;++i<31;)for(j=1;j++<i;)t[i*31+j]=(long)(Math.pow(i,j)+Math.pow(j,i));return java.util.Arrays.stream(t).sorted().distinct().skip(n+1).findAny().getAsLong();};

ดูเหมือนว่ากระแสของ java สามารถบันทึกได้จริง! ใครจะไปคิดบ้าง!

Ungolfed:

package pcg;

import java.util.function.IntToLongFunction;

public class Pcg82981 {

  public static void main(String[] args) {
    IntToLongFunction f = (n) -> {
      long[] t = new long[999];
      for (int i = 1; ++i < 31; ) {
        for (int j = 1; j++ < i; ) {
          t[i * 31 + j] = (long) (Math.pow(i, j) + Math.pow(j, i));
        }
      }
      return java.util.Arrays.stream(t)
          .sorted()
          .distinct()
          .skip(n + 1) // We don't care about 0.
          .findAny()   // equivalent to `findFirst`
          .getAsLong();
    };

    for (int i = 0; i < 82; i++) {
      System.out.println(f.applyAsLong(i));
    }

  }
}

การแก้ไข:

  1. 200 -> 197: พื้นที่ลบออกหลังจากและวงเล็บรอบถูกลบออกlong[]n

0

Python 3, 129-> 116 ไบต์

ฉันรู้ว่ามีคำตอบของ python 3 ที่สั้นกว่านี้ แต่ฉันยังต้องการมีส่วนร่วมในการแก้ปัญหาของฉัน

t=[]
for k in range(100):a,b,q=k//10,k%10,a**b+b**a;f=lambda q:0if q in t else t.append(q);f(q)
print(sorted(t)[7:])

นี่เป็นวิธีที่ดีที่สุดที่ฉันสามารถคิดได้ว่าจะจัดการกับค่าทั้งหมดสำหรับ x และค่าทั้งหมดสำหรับ y หากใครสามารถเล่นกอล์ฟแนวทางของฉันมันจะได้รับการชื่นชม


ทำให้แทนของรายการและแทนที่ที่ผ่านมางบกับธรรมดา tsetfort.add(q)
Cristian Ciupitu


0

Japt -g15 ไบต์

g2ôU ïÈ**Y+pXÃü

ลองมัน

g2ôU ïÈ**Y+pXÃü
                    :Implicit input of integer U
g                   :Index into the following array
 2ôU                :  Range [2,U+2]
     ï              :  Cartesian product with itself
      È             :  Reduce each pair [X,Y]
       **Y          :    Raise X to the power of Y
          +pX       :    Add Y raised to the power of X
             Ã      :  End reduce
              ü     :  Sort & partition by value
                    :Implicit output of first element
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.