Unholyの数字


11

この挑戦は、@ Megoが彼の聖なる数字と聖なる数字で作ったものに非常に触発され、彼と彼のしゃれに感謝します。

聖数字は、穴のある数字のみで構成される数字です。

04689

少なくとも1つの不浄な数字を持つ数字は不浄と見なされます。聖なる数字は定義上悪であるが、聖なる数字に近いことは中立になるのを助ける。したがって、距離が近いほど、神聖さは低くなります(隣接する場合は1)。

数の不浄は、その数字の不浄の合計であり、不聖な数のみで構成される数は無限の不浄を持っています。

Number            :8 5 5 8 7
Digital Unholiness:0+1+1+0+1
Total Unholiness  :3

Number            :0 1 7 5 5 2 8 5 7 
Digital Unholiness:0+1+2+3+2+1+0+1+2
Total Unholiness  :12

Number            :1 5 7 3 2 1
Digital Unholiness:∞+∞+∞+∞+∞+∞
Total Unholiness  :∞

Number            :0 4 6 8 9
Digital Unholiness:0+0+0+0+0
Total Unholiness  :0

あなたのタスク

正の整数または数字のみで構成される文字列を入力として受け取り、その不浄さを出力するプログラムまたは関数を作成する必要があります。入力として整数を使用することを選択した場合は0、言語がそれを落とす可能性があるため、整数を使用しないと仮定できます。

無限の不浄の場合、3つの出力から選択できます

  • 文字(3バイト)
  • 少なくとも1つのゼロ以外の数字を含むが、数字のみを含む無限出力。
  • 組み込みInfinity値。

これはコードゴルフなので、バイトで最短のコードが勝ちます、幸運を!


組み込みInfinity値を返すことは合法ですか?
ニール

1
@Neil私はそれを許可します、私はそれを考えさえしなかったので、そこに良い点があります。
かてんきょう

サンプル入力の一部は、先頭にゼロが付いています。選択した言語が自動的に先頭のゼロを削除しない場合にのみ、入力「正の整数」で関数を記述できるように意図されていますか?この理由により、多くの言語は文字列入力を強制されます。
シモンズ

@ASimmonsだから、入力を(しばらく前に)変更して、「数字のみで構成される文字列」にもなるようにしました。また、重要な点は、それが0神聖な数字であるということではなく、先頭にない0の数字に基づく回答を許可するように投稿を変更します。
帰天峡

@katenkyoええ、文字列として入力できるのを見ましたが、整数として受け取るのは難しいように見えました。OPに対する編集を承認します。
シモンズ

回答:


2

MATL25 24バイト

7Zq1hVmt~f!wf-|X<st~?xYY

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

入力は文字列です。出力では、無限はとしてネイティブに表示されInfます。

説明

7         % number literal                                 
Zq        % prime numbers up to a 7: [2 3 5 7]
1         % number literal                        
h         % horizontal concatenation                       
V         % convert numbers to string: '2  3  5  7  1'
m         % take input implicitly. Determine which digits are 1,2,3,5,7
t         % duplicate
~         % element-wise negate: which digits are 4,6,8,9,0
f         % indices of occurrences of digits 4,6,8,9,0
!         % transpose into column array
w         % swap elements in stack           
f         % indices of occurrences of digits 1,2,3,5,7  
-         % element-wise subtraction with broadcast. Gives 2D array
|         % element-wise absolute value                          
X<        % minimum of each column
s         % sum of elements of array
t         % duplicate                       
~         % element-wise negate
?         % if all elements are true                            
  x       %   delete                                         
  YY      %   push infinity                                       
          % (implicit) end if
          % (implicit) convert to string and display  

4

Python(3)、137 131バイト

def f(s):
 l=range(len(s))
 r=[min(i)for i in zip(*[[abs(j-i)for j in l]for i in l if s[i]in'46890'])]
 return sum(r)if r else'∞'

結果

>>> [f(i) for i in ['85587', '012321857', '157321', '04689']]
[3, 12, '∞', 0]

131バイトのカウントを取得しましたが、何か足りないものはありますか?また、素晴らしい答え:)。
かてんきょう

私はいつも、ファイルの末尾に空白行EN私のエディタアドオン忘れてしまった@Katenkyo
エルワン・

2

Pyth、31 29 27 25バイト

smhS.e?}b"04689"akd.n4zUz

オンラインで試す:デモンストレーションまたはテストスイート

数字ごとに、各数字までの距離を計算します。2桁目が聖でない場合、距離は無限です。これらのリストから最小距離を取り、合計します。

説明:

smhS.e?}b"04689"akd.n4zUz  implicit: z = input string of numbers
 m                     Uz  map each d in [0, 1, ..., len(z)-1] to:
    .e                z      map each k (index), b (value) of b to:
                akd            absolute difference between k and d

      ?}b"04689"               if b in "04689" else
                   .n4         infinity
   S                           sort
  h                            take the first element (=minimum)
s                              print the sum

1

JavaScript(ES6)、93バイト

s=>[...s].map(n=>/[12357]/.test(n)?++u:u=0,u=1/0).reverse().map(n=>r+=n?n<++u?n:u:u=0,r=0)&&r

Infinityが有効な無限ではない場合、に13バイトを追加します==1/0?'∞':r

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