অপরিচ্ছন্ন সংখ্যা


16

একটি অপ্রাকলিত সংখ্যা এমন একটি নম্বর যেখানে এর অঙ্কগুলি নীচের সংখ্যাটির মতো উপরে এবং নীচের মধ্যে বিকল্প হয় : 461902 বা 708143, বা এমনকি 1010101, তবে 123 নয়, কারণ 2 <3।

একটি প্রোগ্রাম বা ফাংশন যা truthy মান যদি একটি সংখ্যা লিখুন ঢেউ-খেলানো , এবং একটি falsy মান অন্যথায়। সংক্ষিপ্ততম কোডটি জয়ী।

দ্রষ্টব্য : একক অঙ্কের সংখ্যাগুলি একটি বৈধ ইনপুট তবে এটিকে udulant হিসাবে বিবেচনা করা হয় না , সুতরাং isUndulantএন <10 এর জন্য মিথ্যা ফিরিয়ে দেয়।


স্ট্রিং, পূর্ণসংখ্যা, ভাসা হিসাবে সংখ্যা ইনপুট ...?
বন্ধ হয়ে গেছে

1
এখানে উদ্দেশ্য কি? কোড-গল্ফ (সংক্ষিপ্ততম ফাংশন)?
আলেকজান্দ্রু

1
@ জেবার্নার্ডো: আমি সত্য বা অপরিজ্ঞাত আচরণটি মনে করব, কারণ এটি পুনরুক্তারের জন্য আরও ভাল বেস কেস হবে।
জোয়ে অ্যাডামস 21

4
আপনার অবিচ্ছিন্ন সংখ্যার সংজ্ঞা মান সংজ্ঞার সাথে একমত নয়: mathworld.wolfram.com/UndulatingNumber.html । এটা কি ইচ্ছাকৃত?
মেল্লামব্যাক

9
বেস মামলাটি সত্য হলে আমার সমাধানটি 16% ছোট হতে পারে (যেমনটি আইএমএইচও বোধ করবে)।
চিরকালীন

উত্তর:


6

জে, 45

*./(n>9),(}:(=-)}.)(}:*@-}.)n#:~10$~>.10^.n=.

নমুনা ব্যবহার:

   *./(n>9),(}:(=-)}.)(}:*@-}.)n#:~10$~>.10^.n=. 461902
1
   *./(n>9),(}:(=-)}.)(}:*@-}.)n#:~10$~>.10^.n=. 708143
1
   *./(n>9),(}:(=-)}.)(}:*@-}.)n#:~10$~>.10^.n=. 1010101
1
   *./(n>9),(}:(=-)}.)(}:*@-}.)n#:~10$~>.10^.n=. 123
0
   *./(n>9),(}:(=-)}.)(}:*@-}.)n#:~10$~>.10^.n=. 5
0

আমি পুরোপুরি নিশ্চিত যে /যেতে যেতে আরও কাজ করার জন্য সন্নিবেশকে মোচড়ানোর একটি সূক্ষ্ম উপায় আছে তবে আমি কয়েক মাস ধরে জে-কম ছিলাম, আমার এটি ফিরে পাওয়া দরকার।


এই সমস্যায় জেদের পরাজিত করা শক্ত হবে। চমৎকার সমাধান!
লিওনার্দো

@ লিওনার্দো ধন্যবাদ!
জেবি

6

রুবি, 72 70 টি অক্ষর

Q=10;k=->n,v{(n%Q-n/Q%Q)*v<0?k[n/Q,-v]:n<Q};u=->n{n>9&&k[n,-1]|k[n,1]}

ব্যবহার এবং টেস্টকেসগুলি:

p u[10101]   # <= true
p u[708143]  # <= true
p u[2421]    # <= false
p u[1231]    # <= false
p u[873]     # <= false

একক অঙ্কগুলি মিথ্যা ফল দেয় :

p u[5]       # <= false

ধারাবাহিক অভিন্ন অঙ্কগুলিও মিথ্যা প্রত্যাবর্তন করে :

p u[66]      # <= false
p u[1221]    # <= false

6

জে, 30 বাইট

*/0<(#,]*{.*1 _1$~#)2-/\a.i.":

অন্যান্য জে জবাবগুলির চেয়ে আলাদা পদ্ধতির।

   * / 0 <(#,] * {। * 1 _1 $ ~ #) 2 - / \ আইআই ": 461902
1
   * / 0 <(#,] * {। * 1 _1 $ ~ #) 2 - / \ আইআই ": 708143
1
   * / 0 <(#,] * {। * 1 _1 $ ~ #) 2 - / \ আইআই ": 1010101
1
   * / 0 <(#,] * {। * 1 _1 $ ~ #) 2 - / \ আইআই ": 123
0
   * / 0 <(#,] * {। * 1 _1 $ ~ #) (} .-} :) আইআই ": 5
0

5 টি অপ্রয়োজনীয় হিসাবে বিবেচনা করা হলে 3 টি অক্ষর খাটো হবে be


ভাল, কমপক্ষে আমি এই চিন্তা নিয়ে নিজেকে সান্ত্বনা দিতে পারি যে আমার এক ঘন্টা এগিয়ে ছিল। :-)
গ্যারেথ

5

(পিডিএফ) ইটেক্স, ১২৯ টি অক্ষর

\def\a#1#2{\if#2?\ifx\r\s\def\s{1}\else
True\end\fi\fi\edef\t{\pdfstrcmp{#2}{#1}}\ifx\s\t
False\end\fi\let\s\t\a#2}\expandafter\a

সংকলন pdfetex filename.tex 1324?একটি পিডিএফ আউটপুট দেয়। টেক্স মূলত একটি টাইপসেটিং ভাষা এবং স্টাডআউটের পরিবর্তে আউটপুট আউট করা আরও 20 টি চর নিতে পারে। এছাড়াও এক-অঙ্কের সংখ্যার জন্য অদ্ভুত প্রয়োজনীয়তা (সত্যের চেয়ে মিথ্যা) আমাকে 26 টি অক্ষর লাগে।


5

হাস্কেল, 88 77 73 65 টি অক্ষর

z=tail>>=zipWith compare
q[]=0>1
q s=all(/=EQ)$s++z s
u=q.z.show

এই সাধারণত ব্যবহৃত ভাষা pragma (অথবা প্রয়োজন -Xপতাকা): NoMonomorphismRestriction। যদি আপনি এটি স্বীকার না করেন তবে আমাদের 4 টি অক্ষর যুক্ত করতে হবে এবং zএভাবে সংজ্ঞা দিতে হবে :

z s=zipWith compare s$tail s

আমি খুব রেগে গিয়েছি যে আপনি আমার 104 চর সমাধানকে মারধর করেছেন। u n=length s>1&&(a[GT,LT]||a[LT,GT])where s=show n;z=q compare s$tail s;w=q(==)z;q=zipWith;a=and.w.cycleএটা দারুণ মার্জিত। zipWithসঙ্গে একবার compareমত তুমি করেছ, তারপর zipWithআবার সঙ্গে (==)এবং cycle[GT,LT]বা cycle[LT,GT]দ্বিতীয় ARG হিসাবে।
চিরকালীন

আপনি ডাব্লু ইনলাইন করতে পারে tail>>=zipWith compareযা কয়েক বাইট ছোট করবে would
গর্বিত হাসেলেলার

এছাড়াও, আমি এর একটি সংক্ষিপ্ত সংস্করণ গল্ফ করেছি q:q[]=0<1;q(a:b:s)|a/=b,a/=EQ=q$b:s;q _=0>1
গর্বিত হাসেলেলার

প্রকৃতপক্ষে, এখানে একটি আরও সংক্ষিপ্ত সংস্করণ: q s=and$all(/=EQ)s:zipWith(/=)s(tail s)
গর্বিত হাসেলেলার

পছন্দ তারা উভয় 3 এ ব্যর্থ হয়েছে (মিথ্যা হওয়া উচিত) এবং প্রথমটি 32 এবং 101010101 এর মতো আরও অনেককে ব্যর্থ করে
MtnViewMark

4

সেজ, 83 76 বাইট

f=lambda x:uniq(cmp(*`x`[i-2:i][::(-1)^i])for i in[2..len(`x`)])in[[1],[-1]]

জেবার্নার্ডো থেকে সিএমপি (* [..]) ব্যবহার করার ধারণা পেয়েছেন। সেজে, এর uniq(...)জন্য একটি উপাধি রয়েছে list(set(...))

সম্পাদনা: সবেমাত্র লক্ষ্য করেছেন যে এক্স <10 এর জন্য uniq(cmp(...)) == [], যা চালু নেই [[1],[-1]]। X যদি একটি পূর্ণসংখ্যার পরিবর্তে স্ট্রিং হিসাবে ইনপুট থাকে তবে আমি আরও 4 টি অক্ষর বের করতে পারতাম!


আমার একটি ধারণা ছিল sum(uniq(...))^2, যেহেতু sum([1,-1]) = 0, এবং সিঙ্গেলনের অঙ্কগুলি [1] এবং [-1] 1 এর স্কোয়ার 1। দুর্ভাগ্যক্রমে, এটি তিনবার-পুনরাবৃত্ত অঙ্কে ব্যর্থ হয়; 1011101.
বুথবি

খুশী হলাম। আমার sষি শেখা উচিত। বিটিডাব্লু, আমি ঠিক বুঝতে পেরেছি যে Lপাইথনের সংখ্যা 2 ** 32 এর চেয়ে বড় হলে ফলাফলটি প্রভাবিত করে ব্যাকটিক্স একটি সংযুক্ত করবে । সেজে কি তা ঘটে?
জেবার্নার্ডো

হ্যাঁ, সেজ গল্ফিংয়ের জন্য কয়েকটি জিনিসকে সুন্দর করে তোলে ... উদাহরণস্বরূপ, এর হাস্যকর স্টার্টআপ সময়টি মডিউলগুলির একটি বিশাল গাছ আমদানি করতে ব্যয় করেছে। সেজ ইন্টিজার ক্লাসটি এ নিয়ে মাথা ঘামায় না Lকারণ সেজ অজগরটি প্রস্তুত করা হয়েছে; 1234 -> পূর্ণসংখ্যা ('1234')। আপনি সেজে এখানে ডানদিকে ঝাঁপিয়ে পড়তে পারেন
বুথবি

4

পাইথন: 101 100 টি অক্ষর

সংশোধনের আগে:

undulate = (lambda n: n > 9
            and all(cmp(*digits) == (i % 2) * 2 - 1
                    for i, digits
                    in enumerate(zip(min(`n`,`n`[1:]), 
                                     max(`n`,`n`[1:])))))

সংশোধনের পরে:

a=lambda b:b>9and all(cmp(*c)==d%2*2-1 for d,c in enumerate(zip(min(`b`,`b`[1:]),max(`b`,`b`[1:]))))

3

পাইথন, 134 129 অক্ষর

def f(x):d=[cmp(*i)for i in zip(`x`,`x`[1:])]if x>9 else[0];n=d[0]>0;return all(i<0 for i in d[n::2])&all(i>0 for i in d[n<1::2])

Ungolfed:

def f(x):
    if x>9:
        d = [cmp(*i)for i in zip(`x`,`x`[1:])] #difference of x[i] and x[i+1]
    else:
        d = [0]       #trick to return False if x<10 using less chars
    n = d[0]>0        #First digit is -1 or 1?
    neg = d[n::2]     #negative numbers if x is Undulant
    pos = d[not n::2] #positive numbers if x is Undulant

    #check if all negs are -1 and all pos are 1 and return value
    return all(i<0 for i in neg) and all(i>0 for i in pos)

3

জাভাস্ক্রিপ্ট, 88 টি অক্ষর

function _(i){i+='';c=i[0];f=i[a=x=1];for(g=f<c;d=i[x++];c=d)g^=a&=g?d<c:d>c;return!f^a}

সংক্ষেপে, সংখ্যাকে একটি স্ট্রিংয়ে পরিণত করুন এবং সংলগ্ন অক্ষরগুলির সাথে তুলনা করুন, প্রতিটিটির প্রত্যাশাকে উল্টান।


2
জাভাস্ক্রিপ্টে কোনও ফাংশনের নামের প্রয়োজন নেই এবং প্রশ্নটি একটি ফাংশনের জন্য স্পষ্টভাবে জিজ্ঞাসা করে, যাতে আপনি দুটি অক্ষর সংরক্ষণ করতে পারেন।
রাই-

3

কে, 41 বাইট

{(x>9)&~max(=). 1_'-':'1_'(<':;>':)@\:$x}

যেমন

{(x>9)&~max(=). 1_'-':'1_'(<':;>':)@\:$x}1212130659
1b

3

CoffeeScript, 98 67 53 বাইট

(n)->0!in((n[i]>=c^(n[0]<n[1])+i)%2for c,i in n[1..])

পরীক্ষা:

[
    '01010101' # true
    '12345'    # false
    '1010101'  # true
    '887685'   # false
    '9120734'  # true
    '090909'   # true
]

uncompressed:

undulant = (n) ->
    direction = n[0] < n[1]
    return n.split('').every (cur, i) ->
        prev = arr[i-1] or 10 * direction
        +(prev >= cur) is (direction+i)%2

3

জে, 44 39 36 31 বাইট

*/2(0<#@],0>*/\)*2-/\".;' ',.":

আগের মতো ব্যবহার।

আমি লক্ষ্য করি নি যে আমার শেষ সম্পাদনাটি 0 টি পরীক্ষা করে অসম্পূর্ণতাটিকে সম্পূর্ণ অপ্রয়োজনীয় করে তুলেছে। :-)

পূর্ববর্তী উত্তর (+ ব্যাখ্যা):

(0=+/2=/\u)*(1<#u)**/2~:/\2<:/\u=.".;' ',.":

ব্যবহার:

    (0=+/2=/\u)*(1<#u)**/2~:/\2<:/\u=.".;' ',.":461902
1

উত্তরের চারটি অংশ রয়েছে:

  1. u=.".;' ',.": এটি সংখ্যায় একটি স্ট্রিং হিসাবে পড়ে ":, ফাঁকা স্থানগুলির পূর্বে অক্ষরের তালিকায় এটি বিভাজন করে ' ',., এটি আবার একসাথে সেলাই করে ;, এটি আবার সংখ্যায় রূপান্তর করে ".এবং ফলাফলটি সংরক্ষণ করে u=.এটি মূলত 461902টিকে 4 6 1 9 0 2 তে পরিণত করে যা আমি সহজ মনে করি জে প্রসেস করতে

  2. */2~:/\2<:/\ এটি আপনার সঞ্চিত মানের উপর পরিচালিত হয়। এটি প্রতিটি জোড়ের অক্ষর এবং চেকগুলি বাম দিকটি ডানটির চেয়ে কম বা সমান হয় 2<:/\তাই 4 6 1 9 0 2 1 0 1 0 1 হয়ে যায় It এটি এর পরে ফলাফল গ্রহণ করে এবং প্রতিটি জোড়কে অসমতার জন্য পরীক্ষা করে 2~:/\সুতরাং 1 0 1 0 1 1 1 1 1 হয়ে যায়। শেষ অবধি এটি 0 বা 1 পাওয়ার জন্য তাদের সকলকে একসাথে বাড়িয়ে দেয় */এই মুহুর্তে আমরা উত্তরটি 2 টির জন্য না করে দিতে পারতাম: একক অঙ্ক 1 ফেরত দেয় যখন প্রশ্নের 0 প্রয়োজন; এবং সমান সংখ্যাকে 'কম' হিসাবে একই হিসাবে গণ্য করা হয় তাই 461900 0 এর পরিবর্তে 1 ফেরত দেয় B আমরা যেতে ...

  3. (1<#u) আপনার সঞ্চিত আইটেমের সংখ্যা #u1 এর চেয়ে বেশি এবং এটি যদি কেবল একটি একক সংখ্যার হয় তবে এটি মিথ্যা প্রদান করে কিনা তা পরীক্ষা করে।

  4. (0=+/2=/\u) এটি আপনার মধ্যে সংখ্যার প্রতিটি জোড়া লাগে এবং সমতার জন্য পরীক্ষা করে 2=/\u। এরপরে এটি উত্তরগুলি যোগ করে এবং এটি 0 থাকে কিনা তা পরীক্ষা করে।

অংশ 2, 3 এবং 4 এর ফলাফলগুলি তখন এক সাথে গুণিত হয় (আশা করা যায়) যখন সংখ্যাটি প্রশ্নের মধ্যে বর্ণিত প্রয়োজনীয়তা পূরণ করে।


দুর্দান্ত কাজটি আবার নেতৃত্ব দিচ্ছে, তবে আমি আপনার কাছ থেকে একটি কৌশল ধার করেছি!
প্রচারিত

(হচ্ছে বললেন, 'আমি মনে করি আপনি আমার সময় লাগতে পারে a.i.":বন্ধ আরো কয়েকটি অক্ষর শেভ।)
ephemient

দুর্ভাগ্যক্রমে, আমি সম্ভবত সেই বৈষম্য ফিরিয়ে আনতে চাই - আমার উত্তর এখন 11, 22, 33, 44 ইত্যাদির জন্য ব্যর্থ হয়
গ্যারেথ

3

হাস্কেল, 82 বাইট

c=cycle[(<),(>)]
l!n=n>9&&and(zipWith3($)l(show n)$tail$show n)
u n=c!n||((>):c)!n

এটি অনলাইন চেষ্টা করুন!


আমি এই সমাধানটিতে কেবল 83 টি অক্ষর গণনা করি। (আপনি কি উইন্ডোজে রয়েছেন? ইউনিক্স লাইন
এন্ডিং

ধন্যবাদ, আমি সাইগউইনে আমার চরিত্রগুলি গণনা করতে 'ডাব্লুসি' ব্যবহার করছিলাম। আমি ৮২ টি চরিত্র গণনা করি। আমি নীচের কোডটি ব্যবহার করেছি, যেমন ডাব্লুসিটি মনে হয় একটি অতিরিক্ত চরিত্রের আউটপুট দেয়। (ভিম একটি ট্রিলিং নিউলাইন দেখায় না, তবে নোটপ্যাডটি ...) readFile "Undulant.hs" >>= print . length . dropWhile (== '\n') . reverse . filter (/= '\r')
টমাস এডিং

c=cycle[(<),(>)]সংক্ষিপ্ত করা যেতে পারে c=(<):(>):c
লাইকনি

1
zipWith3($)l(show n)$tail$show nহতে পারে zipWith3($)l=<<tail$show nএবং ((>):c)হতে পারে tail c। সব মিলিয়ে 70 বাইট: এটি অনলাইনে চেষ্টা করুন!
লাইকনি

3

পাইথন, 119 108 বাইট

def u(x):l=[cmp(i,j)for i,j in zip(`x`,`x`[1:])];print x>9and all([i*j<0 for i,j in zip(l,l[1:])])and l!=[0]

2
জোর এর দুর্দান্ত ব্যবহার। আপনি ... for a,b in zip(t,t[1:])ব্যাপ্তি ব্যবহার না করে বেশ কয়েকটি অক্ষর কেটে ফেলতে পারেন । এছাড়াও, আপনার বন্ধনীগুলির দরকার নেই all([...])- পাইথন জেনারেটর তৈরি করে যখন এটি পাওয়া যায় (... for ...), এমনকি বন্ধনীগুলি কোনও ফাংশন কলের জন্য থাকলেও call
বুথবি

আপনার উপদেশের জন্য আপনাকে ধন্যবাদ! তারা খুব মূল্যবান হয়েছে! -20 অক্ষর
কিরিল

খুব সুন্দর সমাধান। আরও কয়েকটি অক্ষর x>9 and all(i^j for i,j in zip(l,l[1:]))এবং সরান if l else False
এন্টে

1
এটি সব ক্ষেত্রেই কাজ করছে না। দুটি ক্ষেত্রে সমস্যাযুক্ত: কেবলমাত্র 2 ডিজিট (যেমন 11), এবং শেষ 2 অঙ্ক আগের এবং একের চেয়ে বড় (যেমন 12155)। প্রথম সমস্যাটি হ'ল x <100 হলে কোনও পরীক্ষা নেই। দ্বিতীয় কারণ 'ওয়ান ওয়ে তুলনা'। এটি ঠিক করা cmp(i,j)এবং পরিবর্তে i^jসেট করা i*j<0, এবং পরীক্ষার করা যেতে পারে and l[0]!=0। আরও কয়েকটি চরিত্র: - /
এন্টে

1
হুমম ... printএকটি চরিত্রকে বাঁচায় return, তবে এটা কি বৈধ? অনুমানটি একটি ফাংশন জিজ্ঞাসা করে যা "রিটার্ন" করে।


2

সি ++, 94 টি অক্ষর

bool u(int N){int K,P,Q,U=1,D=1;while(N>9)P=N%10,Q=(N/=10)%10,K=D,D=U&Q<P,U=K&Q>P;return U^D;}

আমার এরলং এর মতো পদ্ধতিটি পুনরাবৃত্তির পরিবর্তে লুপের জন্য আঞ্জারারের মতো।


2

পাইথন 105 101 100 অক্ষর

c=lambda r,t:len(r)<2 or(cmp(*r[:2])==t and c(r[1:],-t))
u=lambda x:x>9and c(`x`,cmp(*`x`[:2])or 1)

পুনরাবৃত্তির সমাধান। c(r,t)প্রথম চরটি দ্বিতীয় চরের চেয়ে rকম (t==-1)বা বড় কিনা তা (t==1)পরীক্ষা করে এবং সংক্ষিপ্ত স্ট্রিংয়ের বিপরীতে চেক কল করে।


খুশী হলাম। আপনি প্রথম লাইনে একটি অক্ষর মুছে ফেলে 0সংরক্ষণ করতে পারবেন এবং আপনি দ্বিতীয় লাইনে তিনটি অক্ষর লিখে সংরক্ষণ করতে পারবেনu=lambda x:x>9 and c(`x`,cmp(*`x`[:2])or 1)

Tnx। আমি প্রথম থেকে
কোনওটি

আপনি লিখে আরও একটি বাঁচাতে পারেন x>9and

2

পার্ল / পুনরায়, 139 বাইট

রেজেজেমে সমস্ত কিছু করা একটি খারাপ ধারণা।

/^(?:(.)(?{local$a=$1}))?(?:(?>((.)(?(?{$a lt$3})(?{local$a=$3})|(?!)))((.)(?(?{$a gt$5})(?{local$a=$5})|(?!))))*(?2)?)(?(?{pos>1})|(?!))$/

আমি পার্ল 5.12 ব্যবহার করছি তবে আমি মনে করি এটি পার্ল 5.10 এ কাজ করবে। খুব নিশ্চিত 5.8 আউট যদিও।

(কিউডব্লিউ (461902 708143 1010101 123 5%)) for
    "$ _ হল" মুদ্রণ করুন। (/ পাগল রেজেক্স এখানে যায় /? '': 'না')। "ঢেউ-খেলানো \ N";
}

461902 অযৌক্তিক হয়
708143 মূল্যহীন
1010101 অমূল্য হয়
123 অযৌক্তিক নয়
5 অপরিশোধক নয়

2

গল্ফস্ক্রিপ্ট, 48 বাইট

[`..,(<\1>]zip{..$=\-1%.$=-}%(\{.@*0<*}/abs

জেদকে পরাজিত করার প্রত্যাশা, আমার প্রথমবার গল্ফস্ক্রিপ্ট ব্যবহার করে। বেশ সফল হয়নি।


2

জাভাস্ক্রিপ্ট, 66 65 62 60 বাইট

স্ট্রিং হিসাবে ইনপুট নেয়, trueঅপ্রাকলিত সংখ্যার জন্য প্রত্যাবর্তন করে , একক অঙ্কের জন্য একটি খালি স্ট্রিং (মিথ্যা) এবং falseঅন্যথায়।

([s,...a])=>a+a&&a.every(x=>eval(s+"<>"[++y%2]+x,s=x),y=s<a)

চেষ্টা করে দেখুন

নীচের স্নিপেটটি পরীক্ষা করতে 0-9এবং 25 টি এলোমেলো সংখ্যা চালান <10,000,000

f=
([s,...a])=>a+a&&a.every(x=>eval(s+"<>"[++y%2]+x,s=x),y=s<a)
tests=new Set([...Array(10).keys()])
while(tests.add(Math.random()*1e7|0).size<35);
o.innerText=[...tests].map(x=>(x=x+``).padStart(7)+` = `+JSON.stringify(f(x))).join`\n`
<pre id=o></pre>


ব্যাখ্যা

এটির মধ্যে কয়েকটি মজার ছোট কৌশল যাতে আমি মনে করি এটি আমার কাছ থেকে জেএস সমাধানের বিরল ব্যাখ্যা দেয় war

()=>

আমরা সহজভাবে একটি বেনামে ফাংশন দিয়ে শুরু করি যা ডাকে যখন আর্গুমেন্ট হিসাবে পূর্ণসংখ্যার স্ট্রিং নেয়।

[s,...a]

যে যুক্তি অবিলম্বে 2 পরামিতি মধ্যে destructured হয়: sস্ট্রিং প্রথম অক্ষরটি হচ্ছে এবং aঅক্ষর বাকি ধারণকারী একটি অ্যারের হচ্ছে (যেমন "461902"হয়ে s="4"এবং a=["6","1","9","0","2"])।

a+a&&

প্রথমত, আমরা aনিজের সাথে একত্রীকরণ করি যা উভয় ঘটনাকে স্ট্রিংয়ে ফেলে। যদি ইনপুটটি কোনও একক সংখ্যার হয় তবে aখালি হবে এবং অতএব, খালি স্ট্রিং হয়ে যাবে; একটি খালি স্ট্রিং প্লাস একটি খালি স্ট্রিংটি এখনও একটি খালি স্ট্রিং এবং এটি জেএসে মিথ্যা বলেই, আমরা লজিক্যাল এন্ড এবং আমাদের খালি স্ট্রিংটিকে আউটপুট দেয়। অন্যান্য সমস্ত ক্ষেত্রে a+aসত্যবাদী হবে এবং তাই আমরা ফাংশনের পরবর্তী অংশে চালিয়ে যাচ্ছি।

a.every(x=>)

যদি প্রত্যেক উপাদান আমরা চেক করব xমধ্যে aআয় trueযখন একটি ফাংশন মাধ্যমে গৃহীত।

y=s<a

এটি নির্ধারণ করে যে আমাদের প্রথম তুলনাটি কী হবে ( <বা >) এবং তারপরে আমরা সেখান থেকে বিকল্প করব। আমরা যাচাই করে স্ট্রিং sঅ্যারে চেয়ে কম হয় a, যা প্রক্রিয়ায় একটি স্ট্রিং কাস্ট পরার যদি sপ্রথম অক্ষরের চেয়ে কম হয় a, yহতে হবে trueবা falseযদি এটা না।

s+"<>"[++y%2]+x

আমরা sশুরুতে এবং xশেষে বর্তমান মান সহ একটি স্ট্রিং তৈরি করি । মধ্যে সালে স্ট্রিং মধ্যে আমরা সূচক "<>"বৃদ্ধিশীল দ্বারা y, 2 দ্বারা একটি পূর্ণসংখ্যা, এবং মডিউল তার প্রাথমিক বুলিয়ান মান ভোটদান, আমাদের দান 0বা 1

eval()

স্ট্রালটি সমান করুন।

s=x

অবশেষে, আমরা একটি দ্বিতীয় যুক্তি পাস করি evalযা এটি উপেক্ষা করে এবং পরবর্তী পুনরাবৃত্তির জন্য sবর্তমান মানটির মান সেট করতে এটি ব্যবহার করি x



1

জাভাস্ক্রিপ্ট, 112

function(n,d,l,c,f){while(l=n%10,n=n/10|0)d=n%10,c?c>0?d>=l?(f=0):(c=-c):d<=l?(f=0):(c=-c):(c=d-l,f=1);return f}

আপনার কেবল এটির একটি যুক্তি পাস করতে হবে। আমি সম্ভবত আরও লুপের জন্য এটি আরও গল্ফ করতে পারি।


( d>=l-> d>0) এবং ( d<=l-> d<2) সম্ভবত? আমি খুব ঘনিষ্ঠভাবে দেখছি না, সম্ভবত dভগ্নাংশের অংশগুলি এটি স্কু হতে পারে।
থমাস এডিং

@ ত্রিনিথিস: এটি ছোট Lনয়, একটি নয় 1। ধন্যবাদ যদিও!
রাই-

আপনার যখন প্রয়োজন তখন দেজাভু সানস মনো বা বিটস্ট্রিম ভেরা সানস মনো কোথায়? সম্ভবত আমাকে কিছু কাস্টম সিএসএস বা একটি ব্যবহারকারী স্ক্রিপ্ট দিয়ে স্ট্যাকওভারফ্লো কাস্টমাইজ করতে হবে ...
থমাস এডিং

@ ত্রিনিথিস: আমি সম্মত, ফন্ট পছন্দটি দুর্দান্ত নয়।
বোল্ডিং

1

এরলং, 137 123 118 চর

u(N)->Q=N div 10,u(Q,N rem 10,Q>0,Q>0). u(0,_,D,U)->D or U;u(N,P,D,U)->Q=N rem 10,u(N div 10,Q,U and(Q<P),D and(Q>P)).

কমপক্ষে একটি আপ এবং এক ডাউন ট্রানজিশন কোথাও না হওয়া পর্যন্ত এই প্রত্যাবর্তনটি সত্য হবে না? এটি কি সত্যের জন্য ফিরে আসবে না, 1234321 বলুন?
এমটিএনভিউমার্ক

@ এমটিএনভিউমার্ক, হ্যাঁ এটি ধন্যবাদ দিয়েছে, আমি আশা করি এখন ঠিক করা প্রশ্নটি ভুল বুঝেছি।
স্কট লোগান

1

সিজেম, 30 বাইট

সিজেএম এই চ্যালেঞ্জের চেয়ে নতুন, সুতরাং এটি সবুজ চেকমার্কের জন্য প্রতিযোগিতা করে না, তবে এটি কোনওভাবেই বিজয়ী নয় (যদিও আমি নিশ্চিত যে এটি আসলে বেশ খানিকটা গল্ফ করা যেতে পারে)।

l"_1=\+{_@-\}*;]"_8'*t+~{W>},!

এটি এখানে পরীক্ষা করুন।

কিভাবে এটা কাজ করে

প্রথমত, আমি সদৃশ কোডে 5 বাইট সংরক্ষণ করতে কিছু স্ট্রিং ম্যানিপুলেশন করছি (ইভাল অনুসারে):

"..."_8'*t+~
"..."        "Push this string.":
     _       "Duplicate.";
      8'*t   "Replace the 8th character (the -) with *.";
          +~ "Concatenate the strings and evaluate.";

কার্যকরভাবে আমার কোড হয়

l_1=\+{_@-\}*;]_1=\+{_@*\}*;]{W>},!

প্রথমত, এখানে আমি কীভাবে একটি একক সংখ্যার অদ্ভুত বিশেষ ক্ষেত্রে মোকাবিলা করব। আমি সূচীতে 1অঙ্কটি অনুলিপি করে সংখ্যায় প্রিপেন্ড করি। আমাদের তিনটি কেস আলাদা করতে হবে:

  • প্রথম দুটি অঙ্ক আলাদা, যেমন 12..., তারপরে আমরা পাই 212..., সুতরাং শুরুটি অনুন্নত হয়, এবং পুরো সংখ্যাটি অপ্রতিরোধ্য কিনা তা প্রভাবিত করবে না।
  • প্রথম দুটি অঙ্ক একই 11..., তবে আমরা পাই 111...। এখন শুরুটি অনুন্নত নয়, তবে সংখ্যাটি যাইহোক অযাচিত ছিল না, সুতরাং এটি ফলাফলকেও প্রভাবিত করবে না।
  • যদি সংখ্যার কেবলমাত্র একটি অঙ্ক থাকে তবে সূচকে 1অঙ্কটি প্রথম অঙ্ক হবে (কারণ সিজেমের অ্যারে সূচকটি শেষের দিকে প্রায় লুপ হয়), সুতরাং এটি দুটি অভিন্ন অঙ্কের ফলস্বরূপ, এবং সংখ্যাটি অতুলনীয় নয়

এখন কোডটি বিস্তারিতভাবে দেখছেন:

l_1=\+{_@-\}*;]_1=\+{_@*\}*;]{W>},!
l                                   "Read input.";
 _1=\+                              "Prepend second digit.";
      {_@-\}*                       "This fold gets the differences of consecutive elments.";
             ;]                     "Drop the final element and collect in an aray.";
               _1=\+                "Prepend second element.";
                    {_@*\}*         "This fold gets the products of consecutive elments.";
                           ;]       "Drop the final element and collect in an aray.";
                             {W>},  "Filter out non-negative numbers.";
                                  ! "Logical not.";

আমি নিশ্চিত যে অঙ্কগুলি প্রকৃতপক্ষে (বিশেষত, দুটি ভাঁজ না ব্যবহার করে) উপযুক্ত কিনা তা পরীক্ষা করার জন্য সংখ্যার (দৈর্ঘ্য বৃহত্তর 1) আরও ছোট করার উপায় আছে তবে আমি এটি এখনও পাইনি but


1

প্রোলগ 87 বাইট

u(X) :- number_codes(X,C),f(C).
f([_,_]).
f([A,B,C|L]) :- (A<B,B>C;A>B,B<C),f([B,C|L]).

এটি চালানোর জন্য, কেবল এটি গল্ফ.পিএল হিসাবে সংরক্ষণ করুন, একই ডিরেক্টরিতে একটি প্রোলোগ দোভাষী (উদাহরণস্বরূপ gprolog) খুলুন তারপর করুন:

consult(golf).
u(101010).

trueসংখ্যাটি অমান্যকারী হলে তা দেবে , অন্যথায় ঠিক নেই।


1

গণিত, 46 বাইট

#!=Sort@#&&#!=Reverse@Sort@#&[IntegerDigits@n]

উদাহরণ (স্পেস প্রয়োজন হয় না):

# != Sort@# && # != Reverse@Sort@# &[IntegerDigits@5]
# != Sort@# && # != Reverse@Sort@# &[IntegerDigits@123]
# != Sort@# && # != Reverse@Sort@# &[IntegerDigits@132]
# != Sort@# && # != Reverse@Sort@# &[IntegerDigits@321]

(*  out *)
False  False  True  False

1

স্কালা, 141 133 129 97 বাইট

def u(n:Int):Boolean=n>9&&{
val a=n%10
val b=(n/10)%10
a!=b&&n<99||(a-b*b-(n/100)%10)<0&&u(n/10)}

A = n% 10, b = (n / 10)% 10, c = (n / 100)% 10 সহ

if a > b and b < c or 
   a < b and b > c

তারপরে a-b * b-cহয় হয় x*-yবা -x*yহয় xএবং yইতিবাচক সংখ্যা হিসাবে হয় এবং পণ্য উভয় ক্ষেত্রেই নেতিবাচক হয় তবে -x*-yবা x*y(a <b <c বা a> b> c) এর জন্য পণ্য সর্বদা ইতিবাচক থাকে।

কোডের বাকি অংশগুলি বিশেষ কেসগুলি পরিচালনা করছে: একটি অঙ্ক, দুটি সংখ্যা, দুটি অভিন্ন অঙ্ক।


1

পার্ল, 78 বাইট

sub u{@_=split//,$_=shift;s/.(?=.)/($&cmp$_[$+[0]])+1/ge;chop;$#_&&!/00|1|22/}

1

প্রশ্ন, 71 বাইট

{$[x>9;any all a=#[;(1 -1;-1 1)](#)a:1_signum(-':){"I"$x}each -3!x;0b]}

নমুনা ব্যবহার:

q){$[x>9;any all a=#[;(1 -1;-1 1)](#)a:1_signum(-':){"I"$x}each -3!x;0b]} 5
0b
q){$[x>9;any all a=#[;(1 -1;-1 1)](#)a:1_signum(-':){"I"$x}each -3!x;0b]} 10101
1b
q){$[x>9;any all a=#[;(1 -1;-1 1)](#)a:1_signum(-':){"I"$x}each -3!x;0b]} 01010
1b
q){$[x>9;any all a=#[;(1 -1;-1 1)](#)a:1_signum(-':){"I"$x}each -3!x;0b]} 134679
0b
q){$[x>9;any all a=#[;(1 -1;-1 1)](#)a:1_signum(-':){"I"$x}each -3!x;0b]} 123456
0b
q){$[x>9;any all a=#[;(1 -1;-1 1)](#)a:1_signum(-':){"I"$x}each -3!x;0b]} 132436
1b

আপনি যদি যুক্তি দিতে পারেন {(x>9)&any all a=#[;(1 -1;-1 1)](#)a:1_signum(-':)("I"$')($)x}62 দেয়
স্কিভি

এর আগে ($)সিনট্যাক্স কখনও দেখেনি stringএবং যুক্তিটি একটি সুন্দর স্পর্শ।
tmartin

1

জুলিয়া 0.6 , 62 বাইট

f(x,a=sign.(diff(digits(x))))=x>9&&-a*a[1]==(-1).^(1:endof(a))

একটি সংখ্যা নেয়, trueUndulant জন্য ফেরত, এবং falseনা জন্য। যেমন f(163)আয় true

f(x,a=sign.(diff(digits(x))))=x>9&&-a*a[1]==(-1).^(1:endof(a))
f(x,                        )                                   # function definition
    a=sign.(diff(digits(x)))                                    # default 2nd argument is array of differences of signs of digits
                              x>9&&                             # short circuiting and to catch cases under 10
                                   -a*a[1]                      # make the first element of a always -1
                                          ==(-1).^(1:endof(a))  # check that a is an array of alternating -1 and 1 of correct length

এটি অনলাইন চেষ্টা করুন!

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.