プライム「n」桁


11

これには実用的な目的はありませんが、ゴルフは楽しいかもしれません。

チャレンジ

nが与えられると、

  1. nの各桁の量をカウントし、各カウントに1を加算します
  2. nの素因数分解を行う
  3. 重複する素数を含めずに、nの素因数分解の各桁の量を数える
  4. 手順1と3のリストのそれぞれの要素を乗算して、新しいリストを作成します
  5. そのリストの合計を返します

たとえば、121には2つ1のsとa 2があるため、手順1から次のリストを取得します。

0 1 2 3 4 5 6 7 8 9
1 3 2 1 1 1 1 1 1 1

121の素因数分解は11 2で、ステップ3の次のリストを示します。

0 1 2 3 4 5 6 7 8 9
0 2 0 0 0 0 0 0 0 0

指数をカウントしなかったことに注意してください。これらは一緒に乗算して以下を取得します。

0 1 2 3 4 5 6 7 8 9
0 6 0 0 0 0 0 0 0 0

そして、このリストの合計は6です。

テストケース

1 -> 0
2 -> 2
3 -> 2
4 -> 1
5 -> 2
10 -> 2
13 -> 4
121 -> 6

ノート

  • 標準的な抜け穴は禁止されています。
  • 入力および出力は、合理的な形式で作成できます。
  • 番号に表示されなかった数字については、リストに1(またはステップ3の場合はゼロ)を残す必要があります。
  • これはであるため、バイト単位の最短の解決策が優先されます。

667(= 23 * 29)は、ステップ3で2つの2、1つの3、および1つの9を作成しますか?
ジョナサンアラン

@JonathanAllanはい。
ラーメンシェフ

2
@ wizzwizz4 232792560-> [2,1,4,2,1,2,2,2,1,2](ステップ1); 2*2*2*2*3*3*5*7*14*17*19(ステップ2); そう[0,5,1,2,0,1,0,2,0,1](ステップ3); その後[0,5,4,4,0,2,0,4,0,2](ステップ4); したがって、出力する必要があります21
ジョナサンアラン

@JonathanAllan数えられたらいいな。:-/
wizzwizz4

回答:


2

ゼリー、16バイト

ṾċЀØD
ÆfQÇ×Ç‘$S

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

独立して開発され、他のJellyソリューションとまったく同じではありません。

説明

242入力例として使用することはできません。

ṾċЀØD     Helper link
Ṿ          Uneval. In this case, turns it's argument into a string. 
           242Ṿ → ['2','4','2']. [2,11] → ['2', ',', '1', '1']. The ',' won't end up doing anything.
    ØD     Digits: ['0','1',...,'9']
 ċЀ       Count the occurrence of €ach digit in the result of Ṿ

ÆfQÇ×Ç‘$S  Main link. Argument 242
Æf         Prime factors that multiply to 242 → [2,11,11]
  Q        Unique elements → [2,11]
   Ç       Apply helper link to this list → [0,2,1,0,0,0,0,0,0,0]
     Ç‘$   Apply helper link to 242 then add 1 to each element → [1,1,3,1,2,1,1,1,1,1]
    ×      Multiply the two lists element-wise → [0,2,3,0,0,0,0,0,0,0]
        S  Sum of the product → 5

4

ゼリー 18  17 バイト

-1バイトのおかげcaird coinheringaahingH.PWiz(回避二つのベクトルをペアリング)

DF‘ċЀ⁵
ÆfQÇæ.Ç‘$

正の整数を受け取り、負でない整数を返す単項リンク。

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

どうやって?

DF‘ċЀ⁵ - Link 1, digitalCount: number(s)    e.g. [13,17]
D       - to decimal list (vectorises)            [[1,3],[1,7]]
 F      - flatten                                 [1,3,1,7]
  ‘     - increment (vectorises)                  [2,4,2,8]
      ⁵ - literal ten                             10
    Ѐ  - map across              (implicit range [1,2,3,4,5,6,7,8,9,10])
   ċ    - count                                   [0,2,0,1,0,0,0,1,0,0]

ÆfQÇæ.Ç‘$ - Main link: positive integer, n   e.g. 11999
        $ - last two links as a monad:
      Ç   -   call the last link (1) as a monad   [0,2,0,0,0,0,0,0,0,3]
       ‘  -   increment (vectorises)              [1,3,1,1,1,1,1,1,1,4]
Æf        - prime factorisation                   [13,13,71]
  Q       - deduplicate                           [13,17]
   Ç      - call the last link (1) as a monad     [0,2,0,1,0,0,0,1,0,0]
    æ.    - dot product                           8


または、ドット積を使用します
H.PWiz

2

APL(Dyalog)43 41バイト

CY'dfns'
+/×/+/¨⎕D∘.=⍕¨(⎕D,r)(∪3pco r←⎕)

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

どうやって?

r←⎕ -への入力 r

3pco - 素因数

-ユニーク

⎕D,r-でr始まる0-9

⍕¨ -係数と先頭に追加される範囲のフォーマット

⎕D∘.= -文字列のすべての要素とのデカルト比較 0123456789

+/¨ -形成された2つのテーブルの各行を合計する

×/ -左の2つのベクトルを乗算します

+/ -形成された最後のベクトルの合計



1

パイソン2136の 127バイト

lambda a:sum(''.join(u(a)).count(`i`)*-~`a`.count(`i`)for i in range(10))
u=lambda a:[`j`for j in range(2,a)if a%j<1>len(u(j))]

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

クレジット

  • Mr. Xcoderにより136バイトから127バイトに削減


Mr.Xcoder更新@、私の使用を示すためのおかげで-~、私はいつもそれに混乱少しでした。そして、その<1ことを思い出し始めなければなりません。助けてくれてありがとう。
ニール

これ-~と関連するものを見てみることができます。
ミスターXcoder
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.