এই সংখ্যাটি কি পাহাড়ের সংখ্যা?


17

একটি পাহাড়ি নম্বর এমন একটি সংখ্যা যা প্রথম এবং শেষের ক্ষেত্রে একই অঙ্ক থাকে তবে এটি সব কিছুই নয়। একটি পাহাড় সংখ্যায় প্রথম সংখ্যাগুলি কঠোরভাবে বৃদ্ধি পাচ্ছে , এবং শেষ সংখ্যাগুলি কঠোরভাবে হ্রাস পাচ্ছে বৃহত্তম অঙ্ক পুনরাবৃত্তি করা যেতে পারে

এখানে একটি পাহাড়ি সংখ্যার উদাহরণ:

12377731 | 1237...             | ...731
^ same ^ | strictly increasing | strictly decreasing 
---------+---------------------+---------------------
12377731
   ^^^ okay because largest digit can be repeated

এটি নয় :

4588774 | ...8774
        |     ^^ not the largest digit
        |        so this has to be strictly decreasing
        |        but it's not, so not a hill number

চ্যালেঞ্জ

ধনাত্মক পূর্ণসংখ্যা দেওয়া, একটি পূর্ণ প্রোগ্রাম বা এমন একটি ফাংশন লিখুন যা পার্বত্য সংখ্যার জন্য সত্যবাদী কিন্তু অন্য মানগুলিতে মিথ্যা বলে।

মন্তব্য:

  • ইনপুট এবং আউটপুট যে কোনও যুক্তিসঙ্গত বিন্যাসে হতে পারে ।
  • এটি তাই প্রতিটি ভাষার জিতের মধ্যে সংক্ষিপ্ত উত্তর!

পরীক্ষার মামলা

12321 -> Truthy
1233321 -> Truthy
99 -> Truthy
3 -> Truthy
234567992 -> Truthy
1232 -> Falsy
778896 -> Falsy
23232 -> Falsy
45566554 -> Falsy
5645 -> Falsy

5
কি হবে 222222222? এটি কি ফ্ল্যাট নাম্বার?
ফ্রেগ্রি 8787

1
222222222একটি টিলা সংখ্যা, বৃহত্তম অঙ্ক 2 এবং সুতরাং পুনরাবৃত্তি করা যেতে পারে
u_nd সংজ্ঞায়িত

1
একটি স্ট্রিং যুক্তিসঙ্গত?
সানচাইসেস

উপরে ক্লিক করুন।
ডেনিস

কি 1230321একটা পাহাড়ের নম্বর?
হ্যালো গুডবাই

উত্তর:


10

জেলি , 8 বাইট

_ƝṠÞ+SƊƑ

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

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

_ƝṠÞ+SƊƑ  Main link. Argument: n (integer)

_Ɲ        Take the differences of neighboring digits.
          This maps n = abcd to [a-b, b-c, c-d].
       Ƒ  Fixed; apply the link to the left and return 1 if the result is equal to
          its argument, 0 if not.
      Ɗ       Drei; combine the three links to the left into a monadic chain.
  ṠÞ              Sort the differences by their signs (negative, zero, positive).
     S            Take the sum of the differences, yielding 0 if and only if the
                  first digit is equal to the last.
    +             Add the sum to each difference.

6

জাভাস্ক্রিপ্ট (ES6), 62 54 বাইট

স্ট্রিং হিসাবে ইনপুট নেয়। একটি বুলিয়ান মান প্রদান করে।

s=>s[-[...s].some(p=q=n=>q>(q=Math.sign(p-(p=n))))]==p

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

মন্তব্য

s =>                  // s = input string
  s[                  // we will eventually access either s[0] or s[-1]
    -[...s].some(     // depending on the result of this some()
      p = q =         // initialize p and q to non-numeric values
      n =>            // for each digit n:
        q > (         //   compare q with
          q =         //   the new value of q,
          Math.sign(  //   defined as the sign of
          p - (p = n) //   the difference between the current digit and the previous one
        ))            //   yield true if the previous q is greater than the new q
    )                 // s[-1] being undefined, a truhty some() will force the test to fail
  ] == p              // otherwise: test if the 1st digit s[0] is equal to the last digit p

জাভাস্ক্রিপ্ট (ES6), 65 বাইট

01

s=>/N(,-\d+)*(,0)*[^0-]*$/.test([...s].map(p=v=>p-(p=v)))&p==s[0]

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

কিভাবে?

[-9,9]

[...s].map(p = v => p - (p = v))

উদাহরণ:

"234567992" --> [ NaN, -1, -1, -1, -1, -1, -2, 0, 7 ]

এই অ্যারেটি একটি স্ট্রিংকে জোর করে, যা দেয়:

"NaN,-1,-1,-1,-1,-1,-2,0,7"

আমরা নিম্নলিখিত নিয়মিত প্রকাশটি প্রয়োগ করি:

 +-----------------------> the second 'N' of 'NaN'
 |    +------------------> a sequence of negative numbers
 |    |     +------------> a sequence of zeros
 |    |     |     +------> a sequence of positive numbers
 |    |     |     |  +---> end of string
 |    |     |     |  |
 |/¨¨¨¨¨¨\/¨¨¨\/¨¨¨¨\|
/N(,-\d+)*(,0)*[^0-]*$/

শেষ অবধি, আমরাও পরীক্ষা করে দেখি যে শেষ pসংখ্যাটি প্রথম অঙ্কের সমান হয় কিনা s[0]


অঙ্কের অ্যারে হিসাবে ইনপুট নিয়ে আপনি 5 বাইট সংরক্ষণ করতে পারেন।
শেগি

@Shaggy আমি পারা কিন্তু এই হয় দৃশ্যত মঞ্জুরিপ্রাপ্ত নয়
আর্নল্ড

আসল জোর দিয়ে এই স্পেক থেকে: "ইনপুট এবং আউটপুট যে কোনও যুক্তিসঙ্গত বিন্যাসে হতে পারে " - আমরা সাধারণত একটি সংখ্যার অ্যারেটিকে একটি পূর্ণসংখ্যার জন্য যুক্তিসঙ্গত ফর্ম্যাট হিসাবে বিবেচনা করি।
শেগি

4

পাইথ, 16 বাইট

&SI_._MJ.+jQT!sJ

পরীক্ষা স্যুট চেষ্টা করুন

          jQT          input in base 10
       J.+             J = differences: [3,1,4,1] -> [-2,3,-3]
    ._M                Signs of each element of J
   _                   Reverse the list
 SI                    and check if it is Invariant under Sorting.
                       If this is true, J consists of some positive numbers,
                         followed by some 0s, followed by some negative numbers,
                         which is what we want.
            !sJ        Now we check the other hill condition by ensuring
                         sum(differences) = 0; i.e. the first and last digit are equal.
&                      We take the logical AND of both conditions.

4

জেলি , 11 বাইট

DIµṠNṢƑaS¬$

ব্যাখ্যা:

D               Convert to a list of Digits.
 I              Increments; compute differences between successive elements.
  µ             Start new µonadic link.
   Ṡ              Find Ṡign of each increment
    N             then negate;
     ṢƑ           is the result invariant under Ṣorting?
                  If so, the increments consist of some positive numbers,
                     followed by some 0s, followed by some negative numbers,
                     which is what we want.
       a          Logical AND this result with
        S¬$       logical NOT of the Sum of the increments.
                  If the sum of the increments is zero, first and last digits are equal.

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


4

পার্ল 6 , 39 বাইট

{.[0]==.tail&&[<=] $_ Z<=>.skip}o*.comb

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

ব্যাখ্যা

{ ... }o.comb  # Split into digits and feed into block
.[0]==.tail    # First element equals last
&&             # and
     $_ Z<=>.skip  # Pairwise application of three-way comparator
[<=]           # Results never decrease

আমি এই লোল পোস্ট করা থেকে আক্ষরিক সেকেন্ড দূরে ছিল ।
জো কিং



2

05 এ বি 1 , 19 17 13 12 বাইট

¥D.±Â{RQsO_*

-5 পোর্ট তৈরি করে বাইট @lirtosiast এর Pyth উত্তর

এটি অনলাইনে চেষ্টা করুন বা সমস্ত পরীক্ষার কেস যাচাই করুন

ব্যাখ্যা:

¥           # Push the deltas of the digits of the (implicit) input
            #  i.e. 4588774 → [1,3,0,-1,0,-3]
 D          # Duplicate this list
          # Get the sign of each
            #  [1,3,0,-1,0,-3] → [1,1,0,-1,0,-1]
    Â       # Bifurcate (short for DR: Duplicate and Reverse copy)
            #  i.e. [1,1,0,-1,0,-1] → [-1,0,-1,0,1,1]
     {      # Sort the copy
            #  i.e. [-1,0,-1,0,1,1] → [-1,-1,0,0,1,1]
      R     # Reverse it
            #  i.e. [1,1,0,0,-1,-1]
       Q    # And check if they are equal
            #  i.e. [1,1,0,-1,0,-1] and [1,1,0,0,-1,-1] → 0 (falsey)
s           # Swap to get the list of deltas again
 O          # Take the sum
            #  i.e. [1,3,0,-1,0,-3] → 0
  _         # And check if it's exactly 0
            #  0 → 1 (truthy)
*           # Check if both are truthy (and output implicitly)
            #  i.e. 0 and 1 → 0 (falsey)

Â{RQবিকল্পভাবে (Â{Qএকই বাইট-কাউন্টের জন্য হতে পারে , যেখানে (প্রতিটি চিহ্নকে অবহেলা করা হয়: অনলাইনে চেষ্টা করে দেখুন



2

এমএটিএল , 12 বাইট

dZSd1<AGds~*

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

ব্যাখ্যা

ইনপুট হল অঙ্কের একটি স্ট্রিং। আউটপুট একটি 1বা 0। নম্বরটি 222222এই প্রোগ্রাম অনুসারে একটি পার্বত্য নম্বর। প্রথম এবং শেষ সংখ্যাগুলির সমতা পরীক্ষা করার জন্য ডেনিসের পদ্ধতিটি অনুলিপি করে 2 বাইট সংরক্ষণ করেছেন।

d               % Takes the difference between digits
 ZS             % Calculate the sign. 
   d            % Take the difference again. 
    1<          % A number is a hill number if these differences are < 1.
      A         % Truthy iff above is all true OR if array is empty (necessary for short inputs)
       Gds      % Push the input, and sum all the differences.
          ~     % Negate
           *    % Multiply the two tests (=logical AND).

1

পাইথন 2 , 53 বাইট

def f(s):x=map(cmp,s,s[1:]);s[:sorted(x)==x]!=s[-1]>_

স্ট্রিং হিসাবে ইনপুট নেয়। আউটপুট উপস্থিতি বা একটি ব্যতিক্রম অনুপস্থিত মাধ্যমে হয় ।

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


পাইথন 2 , 62 বাইট

lambda s:s[:eval('<='.join(map(str,map(cmp,s,s[1:]))))]==s[-1]

স্ট্রিং হিসাবে ইনপুট নেয় এবং বুলিয়ান দেয়।

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


ওহ, আমি কয়েক ঘন্টা ধরে আমার মাথা ব্যাথা করছি এবং আমি আপনার 2 সমাধানের সম্মিলিত বাইট গণনা থেকে আরও ছোট কিছু নিয়ে আসতে পারি না! চিয়ার্স।
এটেন

1

গণিত / ওল্ফ্রাম ভাষা, 69 64 বাইট

খাঁটি ফাংশন। পূর্ণসংখ্যার হিসাবে ইনপুট নেয়, ফেরত দেয় Trueবা হয় False

Sort[x=Sign@-Differences[y=IntegerDigits@#]]==x&&y[[1]]==Last@y&

ব্যাখ্যা:

প্রথম ধারাটি "পার্বত্যতা" পরীক্ষা করে:

  • IntegerDigits: পূর্ণসংখ্যার থেকে অঙ্কগুলি পান। সংরক্ষণ করুন y
  • -Differences: ধারাবাহিক পার্থক্য এবং ফ্লিপ লক্ষণ নিন।
  • Sign: ইতিবাচক হলে +1, শূন্য হলে 0 এবং নেতিবাচক হলে -1 দিয়ে প্রতিটি এন্ট্রি প্রতিস্থাপন করুন। সংরক্ষণ করুন x
  • Sort: +1 থেকে 0, -1 থেকে ছোট থেকে বৃহত্তম বৃহত্তম তালিকা সাজান। মূল লিস্টে তুলনা x

দ্বিতীয় ধারাটি প্রথম এবং শেষ সংখ্যা সমান কিনা তা পরীক্ষা করে।

এই কোডটি পরিমার্জন করার টিপসের জন্য @ ইয়ানমিলারের কাছে টুপিটির একটি টিপ।


সত্য যে IntegerDigitsএবং Differencesবরং দীর্ঘ ফাংশন নাম হয় একটু বিরক্তিকর।
মাইকেল সিফার্ট

নিম্নলিখিত পরিবর্তনগুলি সহ 5 বাইট সংরক্ষণ করতে পারে:Sort[x=Sign@-Differences[y=IntegerDigits@#]]==x&&y[[1]]==Last@y&
ইয়ান মিলার


0

রেটিনা 0.8.2 , 52 বাইট

.
$*1;$&$*1,
(1+),\1
,
^(1+);(,1+;)*(,;)*(1+,;)*\1,$

এটি অনলাইন চেষ্টা করুন! লিঙ্কে পরীক্ষার কেস অন্তর্ভুক্ত রয়েছে। ব্যাখ্যা:

.
$*1;$&$*1,

প্রতিটি অঙ্ক দুটি বার অ্যানারিতে রূপান্তর করুন, ;এস দ্বারা পৃথক করে এবং ,এস দ্বারা সমাপ্ত । তবে আপনি তারপরে ফলাফলটিকে প্রথম অঙ্ক হিসাবে ভাবতে পারেন, একটি ;, তার পরে সংলগ্ন অঙ্কের সমস্ত জোড়া, প্রতিটি জোড়ার অঙ্কগুলি পৃথক করে ,এবং জোড়াগুলি ;এস দ্বারা পৃথক করা হয়েছে, তারপরে আরেকটি ;, তারপরে শেষ অঙ্ক, তারপরে একটি ফাইনাল ,

(1+),\1
,

সংলগ্ন অঙ্কের জোড়গুলি বিয়োগ করুন। এটি ;,;সমান সংখ্যার জন্য ছেড়ে যায় এবং 1অসম সংখ্যাগুলির জন্য বৃহত্তর দিকে থাকে। (এটি নিম্নোক্ত রেজেক্সের অংশ হিসাবে করা যেতে পারে তবে স্পষ্টতই এটি এত লোভনীয় হবে না))

^(1+);(,1+;)*(,;)*(1+,;)*\1,$

প্রথম অঙ্কটি মিলান, তারপরে আরোহণের অঙ্কের যেকোন সংখ্যক জোড়, তারপর সমান অঙ্কের যেকোন সংখ্যক জোড়, তারপর অবতীর্ণ সংখ্যাগুলির যে কোনও সংখ্যক জোড়, তারপরে একেবারে শেষে প্রথম অঙ্কটি মিলান।


0

লাল , 181 বাইট

func[n][m: last sort copy t: s: form n
parse t[opt[copy a to m(a: sort unique a)]copy b thru any m
opt[copy c to end(c: sort/reverse unique c)]](s = rejoin[a b c])and(s/1 = last s)]

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

আরও পঠনযোগ্য:

f: func[n][
    t: s: form n                                    
    m: last sort copy t                             
    parse t [ opt [ copy a to m (a: sort unique a) ] 
              copy b thru any m
              opt [ copy c to end (c: sort/reverse unique c) ]
            ]
    (s = rejoin [ a b c ]) and (s/1 = last s)
]

0

পাওয়ারশেল, 77 বাইট

($x=-join("$($args|%{"-$_;$_"})"|iex))-match'^(-\d)+0*\d+$'-and$x[1]-eq$x[-1]

কম গল্ফ পরীক্ষা স্ক্রিপ্ট:

$f = {
                                           # $args = 1,2,3,3,3,2,1
$a=$args|%{"-$_;$_"}                       # "-1;1","-2;2","-3;3","-3;3","-3;3","-2;2","-1;1"
$d="$a"                                    # "-1;1 -2;2 -3;3 -3;3 -3;3 -2;2 -1;1"
$x=-join($d|Invoke-Expression)             # "-1-1-100111"
$x-match'^(-\d)+0*\d+$'-and$x[1]-eq$x[-1]  # $true or $false

}

@(
    ,($True , 1,2,3,2,1 )
    ,($True , 1,2,3,3,3,2,1 )
    ,($True , 9,9 )
    ,($True , 3 )
    ,($True , 2,3,4,5,6,7,9,9,2 )
    ,($False, 1,2,3,2 )
    ,($False, 7,7,8,8,9,6 )
    ,($False, 2,3,2,3,2 )
    ,($False, 4,5,5,6,6,5,5,4 )
    ,($False, 5,6,4,5 )
) | % {
    $expected,$a = $_
    $result = &$f @a
    "$($result-eq$expected): $result"
}

আউটপুট:

True: True
True: True
True: True
True: True
True: True
True: False
True: False
True: False
True: False
True: False

0

সি # (ভিজ্যুয়াল সি # ইন্টারেক্টিভ সংকলক) , 161 বাইট

s=>{var m=s.OrderBy(c=>c).Last();return s[0]==s.Last()&Enumerable.Range(1,s.Length-1).All(i=>i>s.LastIndexOf(m)?s[i-1]>s[i]:i>s.IndexOf(m)?m==s[i]:s[i-1]<s[i]);}

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

এটি কীভাবে কাজ করে তার একটি সংক্ষিপ্ত বিবরণ এখানে ...

  1. ইনপুট একটি আকারে হয় string
  2. বৃহত্তম সংখ্যাটি সন্ধান করুন
  3. নিশ্চিত করুন যে প্রথম এবং শেষের সংখ্যাগুলি একই
  4. সর্বাধিক অঙ্কের শেষ সংঘটন হ্রাসের পরে সংখ্যাগুলি নিশ্চিত করুন
  5. বৃহত্তম অঙ্কের প্রথম এবং শেষ সংখ্যার মধ্যে সংখ্যাগুলি সবচেয়ে বড় অঙ্কের সমান বলে নিশ্চিত করুন
  6. বৃহত্তম সংখ্যার প্রথম সংঘটিত হওয়ার আগে অঙ্কগুলি নিশ্চিত করুন


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