回答:
T.Ajax,.Page,.Act I:.Scene I:.[Enter Ajax and Page]Ajax:Listen tothy!Page:You cat!Scene V:.Page:You be the sum ofyou a cat!Be the product ofthe quotient betweenI you you worse I?If soLet usScene V.Open heart
(I/you)*you<I
I%you>0
SPL よりも短いです。
n->{int r=1;for(;n%++r>0;);return r;}
@Tsathogguaのおかげで間接的に-7バイト。
-2バイトのおかげでJoKingの
説明:
n->{ // Method with integer as both parameter and return-type
int r=1; // Start the result-integer `r` at 1
for(;n%++r>0;); // Increase `r` by 1 before every iteration with `++r`
// and loop until `n` is divisible by `r`
return r;} // After the loop, return `r` as result
n->{for(int i=1;++i<=n;)if(n%i<1)return i;}
43個の文字を取得するには?(私はJavaを話しません。)
n->{for(int i=1;++i<=n;)if(n%i<1)return i;return n;}
動作しますが、残念ながら長くなります。ただし、Javaは無限ループで単一の戻り値を持つことができますが、実際にはバイトを節約できます。n->{for(int i=1;;)if(n%++i<1)return i;}
。ためi
になるであろうn
(テストケースと同じように、最終的に2687
)とn%n==0
、i<=n
この場合には必要とされません。
if/else
と、(通常)バイトを保存できますand/or
。同様に、f=lambda n,x=2:n%x and f(n,x+1)or x
。
[S S T T N
_Push_-1][S S S N
_Push_0][T N
T T _Read_STDIN_as_number][N
S S N
_Create_Label_LOOP][S S S T N
_Push_1][T S S T _Subtract][S N
S _Duplicate][S S S N
_Push_0][T T T _Retrieve][S N
T _Swap][T S T T _Modulo][N
T T N
_If_0_Jump_to_Label_LOOP][S S T T N
_Push_-1][T S S N
_Multiply][T N
S T _Print_as_number]
@JoKingのおかげで-20バイト。
強調表示としてのみ追加される文字S
(スペース)、T
(タブ)、およびN
(改行)。
[..._some_action]
説明としてのみ追加。
オンラインで試す(未加工のスペース、タブ、改行のみ)。
擬似コードの説明:
Integer n = STDIN as integer
Integer i = -1
Start LOOP:
i = i - 1
if(n modulo-i is negative)
Go to next iteration of LOOP
else
i = i * -1
Print i
Exit with error: No exit defined
実行例: input = 9
Command Explanation Stack Heap STDIN STDOUT STDERR
SSTTN Push -1 [-1]
SSSN Push 0 [-1,0]
TNTT Read STDIN as integer [-1] {0:9} 9
NSSN Create Label_LOOP [-1] {0:9}
SSSTN Push 1 [-1,1] {0:9}
TSST Subtract top two (-1-1) [-2] {0:9}
SNS Duplicate top (-2) [-2,-2] {0:9}
SSSN Push 0 [-2,-2,0] {0:9}
TTT Retrieve [-2,-2,9] {0:9}
SNT Swap top two [-2,9,-2] {0:9}
TSTT Modulo top two (9%-2) [-2,-1] {0:9}
NTSN If neg.: Jump to Label_LOOP [-2] {0:9}
SSTTN Push -1 [-2,-1] {0:9}
TSST Subtract top two (-2-1) [-3] {0:9}
SNS Duplicate top (-2) [-3,-3] {0:9}
SSSN Push 0 [-3,-3,0] {0:9}
TTT Retrieve [-3,-3,9] {0:9}
SNT Swap top two [-3,9,-3] {0:9}
TSTT Modulo top two (9%-3) [-3,0] {0:9}
NTSN If neg.: Jump to Label_LOOP [-3] {0:9}
SSTTN Push -1 [-3,-1] {0:9}
TSSN Multiply top two (-3*-1) [3] {0:9}
TNST Print as integer [] {0:9} 3
error
プログラムがエラーで停止します:出口が見つかりません。
i == n
チェックが必要ですか?n%n
とにかく0
n%i
後で印刷を呼び出すことができますか?
@(x)factor(x)(1)
@(x) % Anonymous function taking x as input
factor(x) % Prime factorization
(1) % Get the first element
または:
@(x)max(factor(x)) % the makeup of makeup artists
: f 1 begin 1+ 2dup mod 0= until ;
: f \ Define a new word
1 \ place a 1 on the stack (to use as a counter/index)
begin \ start indefinite loop
1+ 2dup \ increment counter and duplicate counter and prime power
mod \ calculate power % index
0= until \ end the loop if modulus is 0 (no remainder)
; \ end word definition
param($a)(2..$a|?{!($a%$_)})[0]
2
からinput までの範囲を構築し、モジュロ演算の結果がゼロになる$a
要素where
(?
)を取り出し(の約数である要素)、その最小要素を取得します。それはパイプラインに残され、出力は暗黙的です。%
!(...)
$a
[0]
{grep($_%%*,2..$_)[0]}
2の範囲の因子を入力にフィルターし、最初の因子を返す匿名コードブロック。を使用^$
して2バイトを節約しようとしましたが、入力が素数の場合は機能しませんでした。
@Jo Kingのおかげで-52バイト
Function A(n)
For i=n To 2 Step-1
A=If(n Mod i=0,i,A)
Next
End Function
ゴルフをしていない:
Function A(input As Long) As Long
For i = input To 2 Step -1
A = If (input Mod i = 0, i, A)
Next
End Function
説明:
i
後方最初の番号からのループ検索し、均等に分割すべての数値を見つけます。後方に移動しているため、最小値はvairableに格納されますA
。
VBは、関数名(私の場合はA
)に一致する無料の変数を提供します。関数の実行の最後に、その変数の値が返されます(明示的なReturn
ステートメントを除きます)。
JavaでのKevin Cruijssenの回答に触発されました。
2 Jo Kingのおかげで3バイトが削除されました。
lambda n:[i+1for i in range(n)if n%-~i<1][1]
if
あり、条件は次の<1
require"prime"
i=gets.to_i
Prime.each(i){|p|(1..i).each{|n|c=p**n==i
puts p if c
exit if c}}
n
1になりますか?