たくさんの興味深い数字を印刷してください!


40

つまらない数(私は完全にだけ、この挑戦のためにアップしませんでした)このように作成されます。

  1. 正の整数Nを取る
  2. Nの末尾にNの数字を追加して、新しい数値Oを作成します
  3. 最終的な興味のない数はO * Nです

たとえば、N = 12の場合:

  1. O = 1212
  2. O * N = 1212 * 12
  3. 最終番号は14544です

入力

正の整数N(N> 0)または言語の同等の値。間違った入力をキャッチする必要はありません。

出力

対応する興味のない番号。

テストケース

  1 -> 11
  2 -> 44
  3 -> 99
 10 -> 10100
174 -> 30306276

得点

バイト単位の最短コードが優先されます。


9
関連するOEISエントリが必要です...
MKII

1
それは「uninsteresting」名前に基づいて、冗談だった@Seims
MKII

7
@MKII私の悪いが、私は冗談を話さない
Seims

1
数を文字列引数として取ってルールを少し曲げすぎていますか?
ドムヘイスティングス

1
さあ、ルールを曲げてください!:P
Seims

回答:


38

05AB1E、3バイト

Ы*

説明した

Ð    # triplicate input
 «   # conactenate
  *  # multiply

オンラインで試す


2
ああ、いいね!忍者は数秒で私を:d。
アドナン

2
@Adnan Hehe。その時間の
復ven

1
3つの操作、3バイト、それより短くすることはできないと思います。
ラッセマイヤー

2
@busukxuanうん。CONCATENATEは自動的に番号を変換strし、*数値として文字列を解釈します。非常に便利:)
エミグナ

2
@busukxuanええ、Pythと05AB1Eの組み合わせで2バイトでできたかもしれません:)
エミグナ

29

JavaScript(ES6)、10バイト

_=>(_+_)*_

引数としてa Stringではなくa で呼び出す必要がありますNumber

使用法:

(_=>(_+_)*_)('3')
99

@Quillの提案のおかげで、-3バイト。


1
あなたは文字列としてパラメータを渡すことができる場合は、このソリューションオフ2つのバイトをカットすることができます_=>(_+_)*+_
クイル

3
これはどのくらい正確に機能しますか?私が正しく理解している場合_、変数の任意の文字として使用していますか?(PS- (_+_)お尻のように見えます)
チャーレッドグラス

@charredgrass $も動作します

11
型キャスト乱用11
Downgoat

3
興味深いことに、純粋に数学的にできることは、ES7で30バイトn=>(1+10**-~Math.log10(n))*n*n(ES6 -~よりも優先度が高い**)またはES6で31 バイトn=>-~`1e${-~Math.log10(n)}`*n*nでした。再帰でさえ32バイトかかりました:f=(n,m=1)=>n<m?-~m*n*n:f(n,m*10)
ニール

24

Java 8、29 26 25 21バイト

ゴッドブレスラムダ

c->new Long(c+""+c)*c

c-> Long.decode(c + "" + c)* c;


28
Javaを愛さなければなりません。Java 8のラムダと、これまでのcodegolfで最も短いJava回答の1つでも、現在の他のすべての回答に勝っています。xD
ケビンクルーイッセン16

3
javaはbae、ラムダはbae
Seims

3
@KevinCruijssen私はまだ希望があります、いつの日かjavaはcodegolfコンテストに勝つ
user902383

1
編集後、@ MartinEnderのRetina回答を1バイト上回っています!o.Ô
ケビンCruijssen

1
@KevinCruijssenが、それでもPythonを勝ち取るか少なくとも打ち負かすには十分ではありません:(
user902383

20

vim、11

C<C-r>=<C-r>"<C-r>"*<C-r>"<cr>

crcrcrcrcr ...

C       change (delete and enter insert mode) until the end of the line
<C-r>=  insert an expression via the special "expression register"
<C-r>"  insert the contents of the default register (what we just C'd)
<C-r>"  ... again
*       multiplied by
<C-r>"  the input (again)
<cr>    insert the result of this expression

11何?バイト?
非常識な

3
コマンドラインから呼び出す場合は@Insane Bytes、vimから直接呼び出す場合はキーストローク。私は通常、vimの回答からユニットを省略します。なぜなら、それはどちらでもよいからです。
ドアノブ


ある<C-r>キャリッジリターンは?
キャプテンマン

@CaptainManいいえ、<C-r>コントロールとrです。キャリッジリターンは<cr>です。
ドアノブ


15

Emacs、17バイト

(*SPACEC-SPACEC-EM-YSPACEC-YC-Y)C-J

説明

  • (*SPACE(*ポイント(数の前)に追加します。
  • C-SPACEC-EM-Y 番号を選択してコピーします。
  • SPACE ポイントに(数字の後に)スペース文字を追加します。
  • C-YC-Y ポイントに数値の2倍の値を貼り付けます。
  • ))最後に追加します。
  • C-J 行をLISP式として解釈し、結果を出力します。

パイプ(|)で表されるカーソル

  • |174
  • (*SPACE (* |174
  • C-SPACEC-EM-Y (* 174|
  • SPACE (* 174 |
  • C-YC-Y (* 174 174174|
  • ) (* 174 174174)|
  • C-J

結果

(* 174 174174)
30306276|

3
こんにちは、PPCGへようこそ!素敵な最初の投稿!
Rɪᴋᴇʀ

13

C#、19 23バイト

n=>int.Parse(""+n+n)*n;

文字列なし、47バイト

n=>{int i=1;while(i<=n)i*=10;return(i+1)*n*n;};

4
これはスニペットであり、完全なプログラムまたは機能ではありません。これは、例えばと有効だろう(n)=>{int.Parse(""+n+n)*n}2

@cat良いですか?末尾が必要;ですか?
ウェストン16


12

Python 2.7、21バイト:

lambda f:int(`f`*2)*f

まあ、これは私がこれまで最短時間で書いたPythonの最短回答でなければなりません。これは匿名のラムダ関数で、任意の名前を付けてから、通常の関数のように呼び出すことで実行できますprint()。たとえば、入力が12で、関数の名前がのH場合、これはのように呼び出されprint(H(12))ます。

オンラインでお試しください!(イデオン)

これが唯一の値の最大動作と等しいことに留意されたい9223372036854775807任意の高い値とするのでrepr()プットL整数の末尾。したがって、より大きい値の場合9223372036854775807、この24バイトバージョンが機能します。

lambda f:int(str(f)*2)*f

このオンラインをお試しください!(イデオン)


Phytons Stringの操作はまだ魔法のようです...
Seims

どのように@Seims?
busukxuan 16

文字列の乗算と加算。あまり見たことがない。
Seims

@Seims静的言語を主に扱っていると思いますか?
busukxuan 16

@busukxuan必要に応じてnoobと呼んでください:^)
Seims

11

ゼリー、4バイト

;DḌ×

オンラインで試す

説明

;DḌ×    Main link. argument : N

 D      Decimal; Yield the digits of N
;       Concatenate N and its digits
  Ḍ     Convert to integer; We get O
   ×    Multiply O and N

1
あごひげのある幸せなウインク顔です!;DDx

どのエンコードで1バイトのみを使用しますか?通常、UTF-8を使用します。UTF-8では3を取ります(×は2を取りますが、たとえばISO8859-1では1バイトです)。
o11c

@ o11c Jellyは、これらの文字がそれぞれ1バイトである独自のカスタムコードページを使用します。
spaghetto

10

C、70 68 54 53 52 44

f(n){return(pow(10,(int)log10(n)+1)*n+n)*n;}

以前のバージョン(48バイト、数学関数なし)、@ LeakyNunのおかげで16バイト、@ FryAmTheEggmanのおかげで1バイト、@ TobySpeightのおかげで4バイト節約:

f(n,d,i){for(i=d=n;d;d/=10)i*=10;return(i+n)*n;}

f()1つの引数、番号で呼び出し、対応する興味のない番号を返します。

テストプログラム

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char **argv)
{
    while (*++argv) {
        int n = atoi(*argv);
        printf("%d -> %d\n", n, f(n));
    }
    return 0;
}

試験結果:

$ ./84712 1 2 3 4 10 174
1 -> 11
2 -> 44
3 -> 99
4 -> 176
10 -> 10100
174 -> 30306276

オンラインでお試しください!


f(n){int b=1;while(a)b*=10,a/=10;return(n+n*b)*n;}
リーキー修道女

これは含めなくても正常に動作しないはずですmath.hが、あなたはGCC、でそれで逃げるlog10()とはpow()、内蔵されており、コンパイラは単にむしろ(それが必要として)仮定より、「ビルトイン機能の互換性がない暗黙的な宣言」について警告しています彼らは両方とも戻りintます。
トビー・スペイト

@Leaky -あなたはに何も入れていないa...
トビースパイツ

1
完全に算術の世界にとどまる別の答えを見るのは素晴らしいことです(文字列の連結を行わない)。:
トビー・スペイト

1
@Toby-Cでの文字列の連結はゴルフと互換性がありません。;-)
owacoder 16

9

Dyalog APL、7 バイト

⊢×#⍎⍕,⍕

文字列表現

⍕, 文字列表現を追加する

#⍎ 数にする(ルート名前空間内)

⊢× 元の数を掛ける


1
壊れたTIEファイターは面白いです!
ルイスメンドー


1
フォークが目覚める :-D
ルイスメンドー

これらは文字のようなものでも非常に一般的でないので、どのエンコードでバイトではないことは間違いありません。
o11c

@ o11c「bytes」という単語のプリエンプティブリンクをチェックアウトしましたか?meta.codegolf.stackexchange.com/a/9429/43319
アダム

9

J、7バイト

*,~&.":

説明

*,~&.":  Input: n
     ":  Format n as a string
 ,~&.    Reflect and join the string to make "nn"
         and parse the string to get a number
*        Multiply that number by n

+1。私はそれUnderが文字列連結で適切に動作していると考えることさえできませんでした。私にとってなんと素晴らしい発見でしょう!ありがとうございました。
ダン・オーク

悲しいことに、これはカッコ内にあるべきだと思います。なぜなら、それは直接入力された場合には機能せず* ,~ &.": n、他の動詞の形成にも使用できないフックだからです。
ダン・オーク

1
@dahnoakここでPPCGでは、関数に必要なものを指定するだけでよいので、Jで関数を作成するために必要なのは上記のすべてです。その後、引数として入力を使用して呼び出すには、かっこまたは変数に格納されます。
マイル

ああ、私はこれを得た、ty。
ダン・オーク

9

網膜27 20バイト

^
$_$*: $_
:
$_$*:
:

最後のステージの前に結果が単項で表されるため、大きな入力では少し遅くなります。

オンラインでお試しください!(最初の行は、改行で区切られたテストスイートを有効にします。)

説明

2入力例として使用します(単項表現は、大きな入力では少し扱いに​​くいため)。

ステージ1:置換

^
$_$*: $_

文字列の先頭と一致させることにより、^単に何かを追加します。$_入力文字列自体を参照し、$*:その数のコロンを挿入することを意味します。だから我々は得る:

:: 22

ステージ2:置換

:
$_$*:

今、私たちは毎回一致:させ、それをに置き換え$_$*:ます。もちろん、今回$_は整数に評価されませんが(:: 22この例では)、$*文字列の最初の10進数を検索するだけであるため、(Oチャレンジ仕様で)それ自体に連結された入力に評価されます。最後にN*Oコロンが続きますO

:::::::::::::::::::::::::::::::::::::::::::: 22

ステージ3:試合

:

残っているのは:、単項から10進数に戻すためにsをカウントすることです。これがまさにこの段階で行われることです。


ああ、Javaと同じくらいの長さに近い。わずか2バイトだけアウトゴルフしました。+1
R. Kap

@ R.Kap実際、Java 8は3バイトを削除した後、それを凌outしました!o.Ô
ケビンCruijssen

4
申し訳ありませんが、Javaの....
マーティン・エンダー

9

CJam、8バイト

ri_`_+i*

オンラインでお試しください!

r     e# Read input
i     e# Convert to integer
_     e# Duplicate
`     e# Convert to string
_     e# Duplicate
+     e# Concatenate
i     e# Convert to integer
*     e# Multiply. Implicitly display

2
inに変換せずにすぐに文字列に戻すことを提案しようとしていましたが、素朴なアプローチ(つまり、CJamを使用したことがない)はr__+i\i*同じ長さです。
ニックハートリー

@QPaysTaxesああ、いいね。私はあなたと同じことに気付きました:なぜ最初にintに変換してから再び文字列に戻すのか。また、私はCJamを使用したことはなく、考えられるすべてのオペレーターを実際に十分に近く見ていなかったため、一目で解決策を見つけることができませんでした。同じバイト長であっても、文字列に変換せずにアプローチを共有してくれてありがとう。
ケビンCruijssen 16

2バイトでスタック全体に操作を適用する方法があった場合、それはバイト短い(ようになりr__+si*s「スタック上でこの操作を適用する」である)が、私はそのような何も表示されない
ニックハートリー





7

Matlab / Octave、20バイト

@(x)eval([x x 42 x])

これは、入力を文字列として受け取る匿名関数です。

使用例:

>> f = @(x)eval([x x 42 x])
f = 
    @(x)eval([x,x,42,x])
>> f('12')
ans =
       14544

または、ideoneを使用してオンラインで試してください

説明

このコードは、入力文字列を2回連結し、次に文字*(ASCIIコード42)を連結し、次に文字列を連結して、文字列を作成します。次に、連結された文字列が評価されます。


どういう42意味ですか?
リーキー修道女


あ。42番目の関数のようなものを探していました。
リーキー修道女

コードは、入力文字列を2回連結してから文字列を作成し、次に*文字列を再度作成します。次に、連結された文字列が評価されます。それを答えに編集します
ルイスメンドー


6

zsh、13バイト

<<<$[$1$1*$1]

入力をコマンドライン引数として受け取り、STDOUTに出力します。

これはzshでのみ機能しますが、Bashechoでは15バイトが代わりに使用されます<<<

echo $[$1$1*$1]

6

Perl、11バイト

$_*=$_ x2

+ pおよびlフラグ。

(で実行perl -ple '$_*=$_ x2'

パイプのおかげで-2バイト。


2バイトの保存:$_*=$_ x2
パイプ

あなたが必要とは思わない-l
ブラッドギルバートb2gills

それなしで、ので、@ BradGilbertb2gillsはい、私はそれを必要と$_ x2生成されます...\n...\n最初にperlの端部によって数として換算ときに\n
ダダ

Perl 5とPerl 6の両方でテストしていましたが、を削除するのを忘れたことに気付きませんでした6
ブラッドギルバートb2gills 16

6

Excel VBA、35バイト

Subは番号で呼び出され、msgboxは応答を返します

Sub B(a)
MsgBox (a & a) * a
End Sub

代替Excel VBA、42バイト

式で与えられた数値は、答えを返します。

Function B(a)
B = (a & a) * a
End Function

MsgBoxとSubについて考えてください。私が正しく数える場合、それは、あなたに13バイトが保存されます
GER_Moki

値を取得するために何らかの形式の入力ボックスが必要でしょうか?
tjb1 16

Sub B(a)MsgBox(a&a)* a End Subを試してください
GER_Moki

それは値を渡すために別のサブを必要とします、私はそれがゴルフで許可されているかどうかわかりません。
tjb1 16

関数も呼び出す必要があります;)
GER_Moki

6

Lua、20バイト

コマンドライン引数を取り、STDOUT経由で出力します

a=...print((a..a)*a)

そして、@ LeakyNunがコメントで尋ねたように、手放しました:)

a=...       -- alias for the first argument
print(
     (a..a) -- concatenate a with itself, equivalent to a:rep(2)
     *a)    -- multiply the resulting number by a

あなたが説明を追加する場合それは...型強制の素敵な実演することができます。
漏れ修道女


5

PHP、25 24バイト

短いオープニングタグは、驚くほど少数のゴルフチャレンジに役立ちます。幸いなことに、これはそのうちの1つです。残念ながら、演算子の優先順位は、それらを実行するのに必要な順序の反対であるため、多くの括弧が必要です。

<?=($a=$argv[1])*"$a$a";

編集:私はブラケットをどのように使用しているかと思うと、操作の書かれた順序を変更することで連結演算子を効果的にスキップできることに気付きました。


5

dc、11 10バイト

ddZAr^1+**

最終的にはコマンドの使用法が見つかることを知っましたZ

操作は非常に簡単です-桁を数え、その累乗の10を取り、1を追加します。これにより、数値とそれ自体を連結する乗数が得られます。その後、単に乗算します。

I / Oは、通常のdcのようにスタックを使用します。

フルプログラム

これは私がテストに使用したものです:

#!/usr/bin/dc
?
ddZAr^1+**
p

2つの追加コマンドは、パイプラインI / Oを提供します。

テスト

$ for i in 1 2 3 10 174; do printf '%d -> ' $i; ./84712.dc <<<$i; done
1 -> 11
2 -> 44
3 -> 99
10 -> 10100
174 -> 30306276

感謝はバイデンVII XVII(1バイト)によるものです。


代わりA10バイトを保存できます。よくやった!
ジョー

4

おたふく風邪、11バイト

R I W I_I*I

これは、おたふく風邪の特異性が非常に重宝する、珍しいゴルフチャレンジの1つです。まず、すべての変数は文字列であり、すべての数学方程式は厳密に左から右に評価されます(例:PEMDASではありません)。だから、(ほとんど)権利を失った:

R I ;     Read from stdin to variable I
W I_I*I ; Write out I concatenated with I, then multiplied by I.

注意事項-使用しているMumpsのフレーバー(InterSystems Ensemble)はstdinの復帰改行をエコーし​​ないため、入力番号と出力番号は連結して表示されます。それを修正する/読みやすさを高めるには、2バイトを追加し、手動のCR / LFを追加する必要があります。

R I W !,I_I*I

ただし、チャレンジのルールにその要件が見られなかったため、短いコードで十分だと確信しています。間違えた場合は、お気軽にLARTでお問い合わせください。回答を修正します。:-)


4

PowerShellの、25、18のバイト

TessellatingHeckler、PSがパイプラインをどれだけ気に入っているかを思い出してくれてありがとう。

新しい18バイト:

process{$_*"$_$_"}

古い25バイト:

param($a);[int]"$a$a"*$a

説明:

# new
process{$_*"$_$_"}
process{         } # runs code block once for each passed item
        $_*        # multiple the first parameter
           "$_$_"  # concatenate as a string for ease
                   # in this case, the order does the typecasting for us
# old
param($a);[int]"$a$a"*$a
param($a)                 # assigns the first passed parameter to variable $a
         ;                # line terminator
          [int]           # type cast string "$a$a" to int32
               "$a$a"     # convert $a$a to string for easy concatenation
                     *$a  # multiply by $a

テスト(boring.ps1として保存):

# new
12 | .\boring.ps1
14544
174 | .\boring.ps1
30306276

# old
.\boring.ps1 12
14544
.\boring.ps1 174
30306276

間違いなく勝利の答えではなく、関係なく楽しいです!


変数を逆に配置すると、int * stringは文字列を暗黙的にintにキャストし、5バイトのキャストを節約できます。process{$_*"$_$_"}18バイトで、「stdin」(つまり、パイプライン)から入力を受け取ります。たとえば、174|script.ps1
TessellatingHeckler

うーん...興味深い点。同じ構造を使用してそれらを切り替えることもでき、同じ結果を達成できますparam($a);$a*"$a$a"
。– ThePoShWolf

エラー、私はそれを取り戻します、私のものは1バイト長くなります!
ThePoShWolf

@TessellatingHeckler PowerShellのREPL環境はプログラムまたは関数 defaultの対象とならないため、その答えに注意してください。のようなものparam($n)$n*"$n$n"(ダースが持っていたもの、なし;)は同じ長さであり、REPLではありません。
AdmBorkBork

@TimmyD test.ps1パイプラインから読み取るファイルがカウントされないのはなぜですか?stdinから読み取るbashシェルスクリプトもカウントされませんか?
TessellatingHeckler

4

バッチ、27 20 18バイト

@cmd/cset/a%1%1*%1

編集:@TessellatingHecklerのおかげで7バイトを保存しました。@EʀɪᴋᴛʜᴇGᴏʟғᴇʀのおかげでさらに2バイト節約できました。


set /aプロンプトで、割り当ての結果を出力します。-> @cmd/c set/a n=%1%1*%122バイト。
TessellatingHeckler

@TessellatingHeckler出力するのにわざわざ代入するのはなぜですか?
ニール

@TessellatingHecklerフー、私はすでに6週間前に自分でこのトリックをしましたが、すでにそれを忘れていました。-
ニール

@cmd/cset/a%1%1*%118.のための
エリックOutgolfer

1
@Neil Nope、しかし、私はそれをテストしました(Windows 10で!)cmd/cバッチファイル実行ツール自体ではない ため、この部分が必要ですcmd
エリックアウトゴルファー16
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.