Số điện thoại


37

Cho một số tự nhiên n, trả lại n-thứ số Leyland .

Số hiệulandland

Số Leyland là số nguyên dương kcủa mẫu

k = x^y + y^x

Số x,ynguyên hoàn toàn lớn hơn 1.

Chúng được liệt kê theo thứ tự tăng dần.

EDIT: @DigitalTrauma đề nghị tôi bao gồm "định nghĩa" sau:

Hãy tưởng tượng chúng ta ném x^y+y^xvào một cái túi cho tất cả các giá trị có thể xy, và tránh ném vào các bản sao. Sau đó, chúng tôi sắp xếp túi đó. Các túi được sắp xếp là trình tự của chúng tôi.

Chi tiết

Bạn có thể sử dụng lập chỉ mục dựa trên 0 hoặc 1, bất cứ điều gì phù hợp nhất với bạn.

Chương trình của bạn phải có khả năng xuất ra ít nhất tất cả các số Leyland nhỏ hơn số nguyên 32 bit đã ký. (Số Leyland cuối cùng dưới giới hạn này là 1996813914, tại chỉ mục 82.)

Các trường hợp thử nghiệm

Một vài điều khoản đầu tiên như sau:

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

A076980 trong OEIS, ngoại trừ mục đầu tiên. Lưu ý rằng vì mục nhập đầu tiên bổ sung đó, các chỉ số trên OEIS được thay đổi bởi một.

Nhiều hơn có thể được tìm thấy trong tập tin b OEIS


They are enumerated in ascending orderTôi không thực sự chắc chắn điều này có nghĩa là gì. Bạn có thể cung cấp một danh sách của x và y?
DJMcMayhem

@DrGreenEggsandIronMan Điều đó có nghĩa là, 8trước đây 17, không phải là cách khác.
Leaky Nun

3
@DrGreenEggsandIronMan Hãy tưởng tượng chúng ta ném x^y+y^xvào một cái túi cho tất cả các giá trị có thể xy, và tránh bị ném vào các bản sao. Sau đó, chúng tôi sắp xếp túi đó. Các túi được sắp xếp là trình tự của chúng tôi.
flawr

10
Túi rất lớn bạn có ở đó
Luis Mendo

2
@LuisMendo Hỏi @ HenriLéonLebesgue và anh ấy sẽ nói với bạn rằng chiếc túi này về cơ bản là không có gì.
flawr

Câu trả lời:


11

MATL , 16 15 13 byte

Q:Qt!^t!+uSG)

Đầu ra là 1 dựa.

Hãy thử trực tuyến!

Giải trình

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

Trong Matlab uniquesắp xếp các yếu tố. Có phải trong MATL không?
pyjama

1
@pajonk MATL sử dụng 'stable'cờ uniquetheo mặc định vì đó là cách sử dụng điển hình hơn.
Suever

@Suever Ok, cảm ơn đã làm rõ.
pyjama

1
Tôi cảm thấy như chúng tôi sử dụng t!^(trong đó ^có thể được thay thế bằng +, -hoặc bất kỳ số lượng các nhà khai thác) motif rất nhiều. Điều gì sẽ xảy ra nếu chúng ta tạo ra &1 đầu vào có nghĩa cho một số trong đó đối với một vectơ có hành vi đó?
Suever

@Suever Đó là một ý tưởng tuyệt vời! Tôi đã thực hiện một số nghiên cứu với kịch bản của bạn; xem cuộc trò chuyện
Luis Mendo

5

Haskell, 52 byte

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

Thực sự không hiệu quả. Kiểm tra từng số tự nhiên để trở thành một số Leyland, tạo ra một danh sách vô tận những số đó. Đưa ra một đầu vào, lấy phần tử chỉ mục đó của danh sách. Sử dụng chỉ cần x,ytối đa 31 để kiểm tra số nguyên 32 bit.

Cùng chiều dài với filter:

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

Nhìn nhận lại một giải pháp rõ ràng như vậy, tôi thích nó rất nhiều!
flawr

5

Java 8, 225 221 219 216 206 204 193 192 byte

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);}

Chỉ số 0

-2 byte (221 → 219) được lưu bằng cách thay thế 1996813915bằng (1L<<31)cảm ơn @LeakyNun .
-3 byte (219 → 216) nhờ @LeakyNun@Frozn bằng thứ gì đó tôi đã quên mình ..
-10 byte (216 → 206) bằng cách thay đổi Java 7 thành 8.
-2 byte (206 → 204) bằng cách thay thế ArrayListbằng Vectorcảm ơn @TAsk .
-11 byte (204 → 193) bằng cách xóa s<(1L<<31)&, vì câu hỏi nêu rõ " ít nhất là tất cả các số Leyland nhỏ hơn mức tối đa của số nguyên 32 bit đã ký ".
-1 byte (193 → 192) bằng cách thay đổi Vectorthành Stack.

Giải trình:

Hãy thử nó ở đây

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 khi sử dụng java
Leaky Nun

Vì bạn chỉ cần hỗ trợ tối đa 2^31-1(nghĩa là đã ký int), bạn có thể trao đổi một loạt các longdiễn viên không?
admBorkBork

1
Chơi gôn nhanh: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);}
Leaky Nun

1
Khai báo biến vòng lặp for.
Rò rỉ Nun

1
Làm thế nào về for (int i = 1, j; ++i < 30;)for (j = 1; ++j < 30;)
Frozn

4

Bình thường, 17 byte

Chỉ số 0.

@{Sms^M_Bd^}2+2Q2

Hãy thử trực tuyến! (Xin vui lòng, giữ nó ở 100.)

Làm thế nào nó hoạt động

@{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.

Phiên bản chậm hơn

1 chỉ mục.

e.ffqZs^M_BT^}2Z2

Hãy thử trực tuyến! (Xin vui lòng, giữ nó ở 3.)


Liệu nó có giúp tạo ra một loạt sức mạnh [[4,8, ...] [9,27, ...]] và thêm nó vào chuyển vị của nó không?
Neil

@ Tôi không nghĩ vậy. Nó sẽ hữu ích trong Jelly, nhưng không phải trong Pyth. Pyth không tự động vector hóa.
Rò rỉ Nun

Cũng giúp trong MATL, có vẻ như.
Neil

Tại sao bạn giữ phiên bản chậm hơn?
Erik the Outgolfer

4

MATLAB, 58 byte

1 chỉ mục

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

unique trong MATLAB làm phẳng và sắp xếp ma trận.


Cảm ơn sự giúp đỡ của @FryAmTheEggman@flawr .


3

05AB1E, 20 19 byte

Chỉ số 0

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

Giải thích

ÝÌ                     # 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

Dùng thử trực tuyến

Đã lưu 1 byte nhờ @Adnan


Rất đẹp! Một mẹo, ÝÌlà viết tắt của >L>.
Ad Nam

@Ad Nam: Cảm ơn! Tôi không thể tin rằng tôi đã không nghĩ về điều đó: P
Emigna

êđược sort_uniquified, nếu điều đó tồn tại khi điều này được hỏi.
Bạch tuộc ma thuật Urn

@carusocomputing: Nó đã bị lỗi cho đến gần đây tôi rất sợ.
Emigna

3

Toán học, 60 48 40 byte

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

Sử dụng lập chỉ mục một dựa trên. Unionđược sử dụng bằng cách áp dụng nó giữa mỗi hàng của ma trận 2D được tạo bởi Array. Ở đó, Unionsẽ làm phẳng ma trận 2D vào một danh sách đồng thời loại bỏ mọi trùng lặp và đặt các giá trị theo thứ tự được sắp xếp.

Đã lưu 8 byte nhờ @ LLlAMnYP .

Sử dụng

Thí dụ


{#+1,#+1}không cần thiết, có thể để lại {#,#}{2,2}có thể được thay thế bằng đơn giản 2.
LLlAMnYP

@LLlAMnYP Cảm ơn! Không biết rằng Arraysẽ mở rộng đối số thứ ba.
dặm

Tôi cũng vậy nhưng tôi quyết định thử dù sao đi nữa và nó vẫn hoạt động :)
LLlAMnYP

2

Thạch, 14 byte

2 byte nhờ Dennis.

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

Hãy thử trực tuyến! (Mất ~ 1 giây cho tôi 82) (O (n ^ 2) thời gian)

Câu trả lời gốc 16 byte

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

Hãy thử trực tuyến! (Mất <1 giây đối với tôi) (Thời gian không đổi)


R‘*€¹$+Z$FṢQị@nhanh hơn, ngắn hơn và không có giới hạn trên nhân tạo.
Dennis

@Dennis và đánh bại câu trả lời của tôi :-P
Luis Mendo

@Dennis Tôi không hiểu. Làm thế nào đến nó là nhanh hơn so với thứ hai.
Nữ tu bị rò rỉ

Nó không nhanh hơn cái thứ hai. Thời gian thực hiện quá ngắn để có được một phép đo chính xác.
Dennis

Bây giờ là 13 byte :-P
Luis Mendo

2

Tiện ích Bash + GNU, 63

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

Lập chỉ mục 1 dựa trên. Có vẻ như đây là cách tiếp cận khá giống với câu trả lời của @ TimmyD . Thay vì các vòng lặp lồng nhau, mở rộng bash brace được sử dụng để tạo các biểu thức số học được dẫn đến bcđể đánh giá.

Ideone.


2

Perl 6 ,  60 58  56 byte

{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)[$_]}

Kiểm tra:

#! /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

Giải trình:

{
  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
  )[$_]
}

Bạn không thể xóa khoảng cách giữa sort [] 2..31?
Erik the Outgolfer

@ EʀɪᴋᴛʜᴇGᴏʟғᴇʀ Điều đó sẽ biến nó từ một cuộc gọi chương trình con sort([...sang truy cập mảng của một thuật ngữ sort[.... Một điều tương tự xảy ra với không gian khác.
Brad Gilbert b2gills

2

F #, 117 , 104

Welp, nó ngắn hơn câu trả lời C # của tôi ít nhất.

Đã lưu 13 byte nhờ vào Reed Copsey trong phòng chat 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 byte

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

Đã lưu 11 byte nhờ @Neil ... đã lưu thêm 5 byte bằng cách sắp xếp lại cách iexbiểu thức được ước tính.

Phương pháp ngây thơ, chúng tôi chỉ đơn giản là nhân đôi vòng lặp từ x=2..30y=2..x. Mỗi vòng lặp chúng tôi đặt x^y + y^xtrên đường ống dẫn. Việc 30đã được chọn thực nghiệm để đảm bảo rằng chúng tôi bao gồm tất cả các trường hợp ít hơn 2^31-1;-). Chúng tôi đặt những cái đó Sort-Objectđể đặt chúng tăng dần. Đầu ra là không có chỉ số dựa trên đầu vào $args[0].

Vâng, có rất nhiều mục nhập không liên quan được tạo ở đây - thuật toán này thực sự tạo ra số 435 Leyland - nhưng những thứ trên chỉ số 81không được đảm bảo là chính xác và theo thứ tự (có thể có một số bị bỏ qua).

Ví dụ

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 byte

1 chỉ mục. Loại bỏ 4 byte bằng cách sử dụng pryr::rthay vì function.

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

Giải trình

Đối với tất cả các số từ 2 đến 99 và 2 đến 9,

                  2:99,2:9

áp dụng hàm x^y+y^x. Điều này tạo ra một ma trận 98x8.

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

Sắp xếp ma trận này (ép nó thành một vectơ):

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

Xóa tất cả các giá trị không duy nhất:

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

Đọc ntừ stdin và lấy nsố thứ từ danh sách:

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

2

JavaScript (Firefox 42-57), 94 byte

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]

Cần Firefox 42 vì nó sử dụng cả khả năng hiểu và lũy thừa mảng ( [for(..of..)]**).


Bạn không nên đánh dấu nó là ES7?
mbomb007

@ mbomb007 Tôi không nghĩ [for...of]đã chuyển sang ES7.
Neil


Không, đó là for(..of..)không [for(..of..)].
Neil


1

Haskell, 99 98 96 95 94 byte

Nó có thể dễ dàng vượt qua, nhưng đó là điều tốt nhất tôi có thể nghĩ ra.

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

nhập dữ liệu.List fn | w <- [2..toEnum $ n + 3] = (sort $ nub [x ^ y + y ^ x | x <-w, y <-w]) !! n Bạn có biết Tại sao toInteger / toEnum là cần thiết?
Damien

Wow, điều này thật điên rồ =) Hãy thoải mái thêm nó làm câu trả lời của riêng bạn, vì nó khác với tôi! Nếu chúng tôi bỏ qua toIntegergiải pháp của mình, chúng tôi sẽ sử dụng tràn int, bởi vì chúng tôi lặp lại cách cao hơn ( n+3thay vìn ) khi làm việc với danh sách. Nếu không, chúng ta cần mã hóa bốn thuật ngữ đầu tiên hoặc lâu hơn. Chính xác thì toEnumlàm gì trong giải pháp của bạn?
flawr

OK, đó là vì toán tử (!!) liên kết n với Int. Vì n được cho là dưới 82, w có thể được thay thế bằng [2..99] và f=(sort(nub[x^y+y^x|x<-[2..99],y<-[2..x]])!!). toEnumchuyển đổi một Int thành một Enum và Integer là một thể hiện của lớp Enum vì vậy toEnum ở đây chuyển đổi n + 3 thành một Integer.
Damien


1

C #, 141 , 127 byte.

Oh c #, bạn là một ngôn ngữ dài.

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];

Đây là một lambda cần được chỉ định delegate double del(int n);để được chạy, như vậy:

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
Vẫn ngắn hơn Java .
flawr

@flawr Wooooooo?
Morgan Thrapp

Tôi không biết gì về C #, nhưng bạn không thể lưu Enumerable.Range(vào một biến / hàm / iterator / bất cứ thứ gì có tên ngắn hơn để reuisng?
flawr

Tôi có thể, nhưng sau đó tôi sẽ cần phải bao gồm một lớp và loại defs, cuối cùng làm tôi tốn một tấn.
Morgan Thrapp

1

SQL (PostgreQuery 9.4), 171 byte

Thực hiện như một tuyên bố chuẩn bị. Tạo một vài chuỗi 2 - 99, tham gia chéo chúng và thực hiện phương trình. Mật độ xếp hạng các kết quả để lập chỉ mục cho chúng và chọn kết quả đầu tiên có thứ hạng của đầu vào số nguyên.

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

Thực hiện như sau

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

Điều này đã kết thúc chạy nhanh hơn nhiều so với tôi mong đợi


1

J, 29 byte

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

Sử dụng lập chỉ mục một dựa trên. Chuyển đổi từ Mathicala của tôi giải pháp .

Bí mật thực sự ở đây là tôi có :(^+^~) về phía mình.

Sử dụng

   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

Giải trình

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

Nghiêm trọng hơn,

<:{[:/:~@~.@,[:(^+^~)"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

... Lợi nhuận : D
flawr

1

Swift 3, 138 byte

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])}

Mã mã

Hãy thử nó ở đây

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
Chào mừng bạn đến với Câu đố lập trình và Code Golf! Câu trả lời đầu tiên rất hay, nhưng sẽ tốt hơn nếu bạn có thể giải thích những gì đang diễn ra.
clismique

1

Tiên đề 148 byte

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)

một số ví dụ

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]

Loại: Danh sách số nguyên




0

J, 38 31 byte

Chỉ số 0.

[{[: (# ~ ~ :) @ /: ~ @, / [: (+ | :) [: ^ / ~ 2 + i. @>: @]
((# ~ ~ :) /: ~, / (+ | :) ^ / ~ 2 + i, 29x) {~ [

Sử dụng

>> f =: ((#~~:)/:~,/(+|:)^/~2+i.29x){~[
>> f 81
<< 1996813914

0

Java, 200 197 byte

Chỉ số 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();};

Có vẻ như các luồng của java thực sự có thể tiết kiệm byte! Ai có thể nghĩ?!

Ung dung:

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));
    }

  }
}

Chỉnh sửa:

  1. 200 -> 197: xóa khoảng trống sau long[]và xóa dấu ngoặc đơn xung quanh n.

0

Python 3, 129-> 116 byte

Tôi biết có một câu trả lời python 3 ngắn hơn, nhưng tôi vẫn muốn đóng góp giải pháp của tôi.

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:])

Đây là cách tốt nhất mà tôi có thể nghĩ ra để xử lý việc đi qua tất cả các giá trị cho x và tất cả các giá trị cho y. Nếu ai đó có thể chơi golf theo cách của tôi, nó sẽ được đánh giá cao


Hãy tmột setthay vì một danh sách, và thay thế cuối cùng forbáo cáo với đồng bằng t.add(q).
Cristian Ciupitu


0

Japt -g, 15 byte

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

Thử nó

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
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.