これがこのサイトでの私の最初の挑戦です。
課題は、正の入力整数を取り込み、昇順(から、を含む)で(は現在の整数)の出力を出力することです。
例
入力5が与えられると、プログラムは以下を印刷します。
1
8
9
4
1
は1およびは8およびは9およびは4およびは1および
入出力
入力は正の整数の形式になります。出力は、コンマまたは改行で区切られた数字のリストになります。
これはcode-golfなので、最短のコードが優先されます。
これがこのサイトでの私の最初の挑戦です。
課題は、正の入力整数を取り込み、昇順(から、を含む)で(は現在の整数)の出力を出力することです。
入力5が与えられると、プログラムは以下を印刷します。
1
8
9
4
1
は1およびは8およびは9およびは4およびは1および
入力は正の整数の形式になります。出力は、コンマまたは改行で区切られた数字のリストになります。
これはcode-golfなので、最短のコードが優先されます。
回答:
⍳*⊢-⍳
匿名プレフィックス暗黙関数。範囲[1..10]のTIOテスト。
@lirtosiastに3バイトをありがとう。
⍳*⊢-⍳ ⍝ Tacit function
⍳ ⍝ Range. ⍳n generates the vector [1..n].
⊢- ⍝ Subtracted from the argument. The vector is now [n-1,n-2,...,0]
⍳* ⍝ Exponentiate using the range [1..n] as base. The result is the vector
⍝ [1^(n-1), 2^(n-2), 3^(n-3),...]
⍳*⊢-⍳を使用した5バイト⎕IO←1です。
õ_p´U
õ :Range [1,input]
_ :Map
p : Raise to the power of
´U : Input decremented
방빠싹받분샥퍼붇바파쟈뿌차샦히망맣여
타빠바푸투반또분뽀뿌서썪삯타삯받반타
석차샦져쌲볼어타토싻삭빠쏛ㅇ또섞썪뻐
AVIS(韓国語)で試してください。上記のコードをコピーして貼り付け、スタートボタンを押し、数字を入力して、その動きを確認してください。出力を表示するには、左側の> _アイコンを押します。
それはあまりゴルフではありませんが、私はそれにショットを与えます。
_m^-Q
最適にエンコードされるのはこれは4.106バイトです。
_ reverse of the following list:
m map the following lambda d:
^ (N-d)**d
-Qd
d
Q over [0,...,N-1]
lambda n:[i**(n-i)for i in range(1,n+1)] #Outputs a list
n,i=input(),0
exec"print(n-i)**i;i+=1;"*n #Prints in reversed order
.+
*
_
$$.($.'*$($.>`$*)_¶
%~`^
.+¶
.+
*
入力を単項に変換します。
_
各位置に一致します。これにより、いくつかの置換変数が設定されます。$`試合の左側になります。$>`これを左および一致するように変更します。$.>`これを変更して、長さ、つまり現在のインデックスを取得します。$'一方、一致の右側、$.'つまり長さ、つまり現在の指数です。
$$.($.'*$($.>`$*)_¶
文字列を作成$.(プラス$.'の繰り返しを$.>`*プラス_。たとえば、元の入力が5でインデックスが2の場合、$.'3 $.>`は2なので、結果の文字列はになります$.(2*2*2*_。これは、2³を計算するRetina置換式です。各文字列は、独自の行に出力されます。
%~`^
.+¶
前のステージで生成された各行について、行に接頭辞.+を付けて置換ステージに変換し、そのステージを評価して式を計算します。
n=>(g=i=>--n?++i**n+[,g(i)]:1)``
@Shaggyへのクレジットで-3バイト、@ l4m2で-1バイト!
f=(n,i=1)=>n--?[i++**n,...f(n,i)]:[]
n=>[...Array(n)].map(x=>++i**--n,i=0)
x=>new int[x].Select((_,i)=>Math.Pow(i+1,--x))
:Gy-^
5例として入力を検討してください。
: % Implicit input. Range
% STACK: [1 2 3 4 5]
G % Push input again
% STACK: [1 2 3 4 5], 5
y % Duplicate from below
% STACK: [1 2 3 4 5], 5, [1 2 3 4 5]
- % Subtract, element-wise
% STACK: [1 2 3 4 5], [4 3 2 1 0]
^ % Power, element-wise. Implicit display
% STACK: [1 8 9 4 1]
for(int i=1;a+1>i;i++)System.out.println(Math.pow(i,a-i));
aに「入力」を割り当てる必要がありますが、許可されていません。
n->{for(int i=0;i++<n;)System.out.println(Math.pow(i,n-i));} 60バイト(リンク内のコードとテストケース)
import StdEnv
$n=[i^(n-i)\\i<-[1..n]]
$ :: Int -> [Int]整数を取り、結果のリストを返すことを定義します。
$ n // function $ of n
= [i ^ (n-i) // i to the power of n minus i
\\ i <- [1..n] // for each i in 1 to n
]
LD<Rm
説明:
L # List in the range [1, (implicit) input integer]
# i.e. 5 → [1,2,3,4,5]
D< # Duplicate this list, and subtract 1 to make the range [0, input)
# i.e. [1,2,3,4,5] → [0,1,2,3,4]
R # Reverse it to make the range (input, 0]
# i.e. [0,1,2,3,4] → [4,3,2,1,0]
m # Take the power of the numbers in the lists (at the same indices)
# (and output implicitly)
# i.e. [1,2,3,4,5] and [4,3,2,1,0] → [1,8,9,4,1]
+0。それなしで動作するようです。
I⮌ENX⁻θιι
オンラインでお試しください!リンクは、コードの詳細バージョンです。説明:
N Input as a number
E Map over implicit range
ι Current value
⁻ Subtracted from
θ First input
X Raised to power
ι Current value
⮌ Reverse list
I Cast to string
Implicitly print on separate lines
v=>Enumerable.Range(0,v--).Select(i=>Math.Pow(i+1,v--))