প্রাসঙ্গিক অঙ্কের গ্রুপিংগুলি সন্ধান করুন


14

সম্প্রতি, আমার খ্যাতি ছিল 25,121। আমি লক্ষ্য করেছি যে প্রতিটি অঙ্কের গোষ্ঠীকরণ (অর্থাত্ কমা দ্বারা পৃথক করা সংখ্যা) একটি নিখুঁত বর্গ।

তোমার চ্যালেঞ্জ, পূর্ণসংখ্যা একটি অ-নেতিবাচক দেওয়া হয় এন এবং একটি ইউনারী বুলিয়ান ব্ল্যাক বক্স ফাংশন : জেড *বি , একটি truthy মান উত্পাদ যদি এর প্রতিটি মান এর অঙ্ক সম্পর্কিত প্রয়োগ এন truthy, এবং falsey অন্যথায়।

ডান দিক থেকে শুরু করে, সংখ্যাটিকে 3 টি গ্রুপে বিভক্ত করে কেউ অঙ্কের গোষ্ঠীগুলি খুঁজে পেতে পারে। বামদিকের গোষ্ঠীতে 1, 2 বা 3 সংখ্যা থাকতে পারে। কিছু উদাহরণ:

12398123  -> 12,398,123    (3 digit groupings)
10        -> 10            (1 digit grouping)
23045     -> 23,045        (2 digit groupings)
100000001 -> 100,000,001   (3 digit groupings)
1337      -> 1,337         (2 digit groupings)
0         -> 0             (1 digit grouping)

অতিরিক্ত বিধি

  • এই ফাংশনটি বুলিয়ান (যেমন trueএবং false), 1গুলি এবং 0গুলি, বা কোনও সত্যবাদী / মিথ্যা মানকে মানচিত্র করতে পারে। কোন উত্তর (গুলি) আপনার উত্তর দ্বারা সমর্থিত দয়া করে নির্দিষ্ট করুন।
  • আপনি ইনপুট হিসাবে একটি পূর্ণসংখ্যা বা একটি পূর্ণসংখ্যার স্ট্রিং (অর্থাত্‍ সংখ্যার সমন্বিত একটি স্ট্রিং) নিতে পারেন।
  • আপনি একটি প্রোগ্রাম বা একটি ফাংশন লিখতে পারেন।
  • যখন ফাংশন ডিজিটাল গ্রুপ ক্ষণস্থায়ী , আপনি সমস্ত অপ্রয়োজনীয় নেতৃস্থানীয় শূণ্যসমূহ ছাঁটা করা উচিত নয়। উদাহরণস্বরূপ, , যখন এন = 123,000 এ প্রয়োগ হয় তখন (123) এবং (0) হিসাবে কার্যকর করা উচিত ।

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

ফাংশন স্বরলিপিটি হ'ল n -> f(n), উদা n -> n == 0। সমস্ত অপারেটর পূর্ণসংখ্যা গণিত ধরে। (যেমন, sqrt(3) == 1)

function f
integer N
boolean result

n -> n == n
1230192
true

n -> n != n
42
false

n -> n > 400
420000
false

n -> n > 0
0
false

n -> n -> 0
1
true

n -> sqrt(n) ** 2 == n
25121
true

n -> sqrt(n) ** 2 == n 
4101
false

n -> mod(n, 2) == 0
2902414
true

n -> n % 10 > max(digits(n / 10))
10239120
false

n -> n % 10 > max(digits(n / 10))
123456789
true

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

ব্লগ বক্স ফাংশনগুলির জন্য রেফারেন্সটি পড়ুন , বিশেষত সেই পোস্টের শেষে উল্লেখ করুন c সংক্ষিপ্তসার হিসাবে, হ্যাঁ, আপনি এমনকি করতে পারেন, এমনকি যদি আপনার ভাষা আর্গুমেন্ট হিসাবে কাজ করতে সক্ষম হয় (আফকা)
কনর

ইনপুট কি নেতিবাচক হতে পারে? জিরো? আপনি পূর্ণসংখ্যা সম্পর্কে কথা বলেন তবে সমস্ত উদাহরণ ইতিবাচক। আমি পরীক্ষার কেসগুলি সহ আরও পরামর্শ দিতে চাই যেখানে 000 এর গ্রুপিং পরিচালনা করা দরকার।
xnor

1
@ কনরও ব্রায়ান সে ক্ষেত্রে আপনাকে পরীক্ষার ক্ষেত্রে যুক্ত ( n -> n > 0প্রয়োগ করা 0) করা উচিত কারণ বেশিরভাগ উত্তর এতে ব্যর্থ হয়।
অসোন তুহিদ

1
@EriktheOutgolfer এইগুলি হল [0]
কনর ও'ব্রায়েন

উত্তর:


4

জেলি , 5 বাইট

bȷÇ€Ạ

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

কমান্ড-লাইন আর্গুমেন্টটি সংখ্যা। এই ফাংশনটি রেখার উপরের রেখাটি এই প্রোগ্রামটির বাকি অংশের মূল লাইন, সেটি হল যে কোডগুলি প্রতিটি গ্রুপের জন্য কল হয়ে যায়। লাইনটি রেফারেন্স না দেওয়ার বিষয়ে সাবধান bȷÇ€Ạ! এখানে ব্যবহৃত উদাহরণটি হল 5 তম পরীক্ষার কেস।



@ অ্যাসোনতুহহিদ এটি নয়; সংখ্যাটি 0এবং এর অঙ্কের গ্রুপের তালিকাটি [0]তাই প্রতিটি তালিকার (এখানে একক 0) ম্যাপ করা হয় , তালিকায় পরিণত হয় [1]এবং যেহেতু এই তালিকার সমস্ত উপাদান সত্যবাদী, 1ফিরে আসে। নোট করুন যে আমার যদি ডিজিটাল গ্রুপের তালিকাটি []পরিবর্তিত হত তবে ফলাফলটি পরিবর্তন হবে না, কারণ এর সমস্ত উপাদান []সত্যবাদী (খালি সত্য)। তবে ফলাফল বিভিন্ন প্রোগ্রামের জন্য আলাদা হতে পারে এবং নিয়মগুলি এ সম্পর্কে ঠিক পরিষ্কার নয় ( জিজ্ঞাসিত ওপিকে )।
এরিক আউটগল্ফার

দুঃখিত, তবে আমি জেলি বুঝতে পারছি না। সুন্দর সমাধান।
অসোন তুহিদ

7

ব্র্যাচল্যাগ , 8 বাইট

ḃ₁₀₀₀↰₁ᵐ

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

ব্ল্যাকবক্স ফাংশনটি দ্বিতীয় লাইনে যায় (বা টিআইওর "পাদলেখ") এবং পূর্ণসংখ্যাটি এসটিডিএন থেকে পড়ে is মুদ্রণ true.বা false.তদনুসারে।

ḃ₁₀₀₀      Compute the base-1000 digits of the input.
     ↰₁ᵐ   Map the blackbox predicate over each digit. We don't care about the
           result of the map, but the predicate must succeed for each digit,
           otherwise the entire map fails.

5

এপিএল (ডায়ালগ) , 16 13 বাইট

3 অ্যাডম ধন্যবাদ জানায় 3 বাইট

∧/⎕¨1e3⊥⍣¯1⊢⎕

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

কিভাবে?

1e3⊥⍣¯1⊢⎕ - সংখ্যা 1000 এবং এনকোড 1000 বেস ইনপুট

⎕¨ - ইনপুট ফাংশন এবং প্রতিটি উপর প্রয়োগ

∧/ - যৌক্তিক এবং দিয়ে হ্রাস করুন


স্পষ্ট করে 3 বাইট সংরক্ষণ করুন: এটি অনলাইনে চেষ্টা করুন!
অ্যাডাম

@ আদম ধন্যবাদ! যদিও আমি আলফা-আলফা পছন্দ করেছি ...
ইউরিয়েল

আমি ভুল হলে আমাকে সংশোধন করুন তবে আমি মনে করি এটি ব্যর্থতা
Asone Tuhid



4

সি (জিসিসি) , 66 58 48 বাইট

-10 বাইট @ নীলকে ধন্যবাদ!

t=1000;g(f,i)int f();{i=f(i%t)&(i<t||g(f,i/t));}

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


45 বাইট? g(f,i)int f();{i=!i||f(i%1000)&&g(f,i/1000);}
নীল


সেরা ফিক্স আমি 3 বাইট খরচ করতে পারে: এটি অনলাইন চেষ্টা করুন!
নীল


3

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

f=>g=i=>f(i%1e3)&(i<1e3||g(i/1e3|0))

কারিরিং দ্বারা ফাংশন এবং মান নেয় এবং 0 বা 1 প্রদান করে: সম্পাদনা: @ শেগিকে ধন্যবাদ 4 বাইট সংরক্ষণ করা।


1000-> 1e3কয়েক বাইট সংরক্ষণ করতে। আর তুমি প্রতিস্থাপন করতে পারে &&সঙ্গে &অন্য বাইট জন্য?
শেগি

@ শেগি হ্যাঁ, আমি মনে করি এটি যথেষ্ট নিরাপদ। বেটস্যাগের উত্তরের জন্য একই?
নীল

function_name(n=>n>0)(0)(রিটার্ন true) এর জন্য ব্যর্থ হয়
অসোন তুহিদ 7'18

@ অ্যাসোনতুহিড ধন্যবাদ, স্থির।
নিল

2

পাইথ , 9 বাইট

.AyMjQ^T3

এটি অনলাইন চেষ্টা করুন! (তৃতীয় পরীক্ষার কেস ব্যবহার করে)

ধরে নিই ব্ল্যাক-বক্স ফাংশনটির নাম দেওয়া হয়েছে y। টিআইও-তে প্রদর্শিত যেমন আপনি L(যুক্তি b:) ব্যবহার করে এ জাতীয় কোনও ক্রিয়াকলাপ ঘোষণা করতে পারেন । আমি সময় পেলে সব পরীক্ষার কেস পরে বাস্তবায়ন করব।


2

স্ট্যাক্স , 8 বাইট

Vk|Eym|A

স্ট্যাক্স প্রোগ্রামগুলিতে ফাংশন কল বা আর্গুমেন্ট নেই, তাই আমরা Yরেজিস্টারে একটি ব্লক সংরক্ষণ করি যা একক মান গ্রহণ করে এবং উত্পাদন করে। প্রোগ্রাম কোডের আগে এটি করা যেতে পারে।

{...}Yd     store a block in the Y register that executes ...
Vk|E        get "digits" of input using base 1000
    ym      map "digits" to array using y as mapping function
      |A    all elements are truthy?

নিখুঁত স্কোয়ার ফাংশনটি ব্যবহার করে এখানে একটি উদাহরণ


2

পরিষ্কার , 54 বাইট

import StdEnv
$n=if(n<1)True($(n/1000))&&f(n rem 1000)

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

ফাংশন নির্ধারণ $ :: Int -> Bool, আশা একটি ফাংশন f :: Int -> Boolঅন্যত্র সংজ্ঞায়িত করা।



@ অ্যাসোনতুহিড ফিক্সড
16urous

2

জাভা (ওপেনজেডিকে 9) , 94 বাইট

f->n->{int r=0,l=n.length();for(;l>0;l-=3)r+=f.test(n.substring(l<4?0:l-3,l))?0:1;return r<1;}

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



@ অ্যাসোনটিউহিড বাইটের দুর্দান্ত মূল্য নির্ধারণ করেছে।
অলিভিয়ার গ্রাওগায়ার


1

05 এ বি 1 ই , 8 বাইট

₄вεI.V}P

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

ব্যাখ্যা

₄в         # convert first input to base-1000
  ε   }    # apply to each element
   I.V     # execute second input as code
       P   # product of the resulting list

প্রথম ইনপুট এবং দ্বিতীয় হিসাবে ফাংশন হিসাবে সংখ্যা নেয়। সত্যবাদীর জন্য
আউটপুট 1 এবং মিথ্যা বলার জন্য 0


এটি প্রতিটি উপাদানটিতে কোড চালায় না, তবে পুরো তালিকায়।
এরিক আউটগল্ফার

@ এরিকথ আউটগল্ফার: 05 এ বি 1 ই এর স্বয়ংক্রিয় ভেক্টরাইজেশন সহ এটি বেশিরভাগ ক্ষেত্রেই ঘটবে। আমি ঠিক বুঝতে পেরেছি যে এটি কাজ করে না Qএবং Êযদিও। আমি 8-বাইট সংস্করণে ফিরে আসব।
এমিগানা

তবুও, এটি .Vভেক্টরাইজ হয় না, এমনকি এটি সূচনার সাথে যুক্তি হিসাবে তালিকাও গ্রহণ করে না।
এরিক দি আউটগল্ফার

@ এরিকথ আউটগল্ফার: আমি কখনও বলিনি যে .Vভেক্টরাইজ হয়। আমার লিঙ্কে উদাহরণে এটি È
এমিগিনা

প্রকৃতপক্ষে Q এবং Êভেক্টরাইজেশন নিয়ে কাজ করব যা আমি আগে বলেছি, তবে স্বয়ংক্রিয় ভেক্টরাইজেশন ব্যবহার করে এই কমান্ডগুলি পুরো তালিকায় ম্যাপ তৈরি করে যা চ্যালেঞ্জের আত্মার বাইরে অনুভব করে তাই আমাদের প্রয়োজন ε
Emigna

1

এক্সেল ভিবিএ, 79 বাইট

একটি বেনামি ভিবিই তাত্ক্ষণিক উইন্ডো ফাংশন যা ইনপুট নেয়, nএটি পরিসীমা থেকে পূর্ণসংখ্যা টাইপ করে[A1] এবং একটি সাধারণভাবে সংজ্ঞায়িত ভিবিএ ফাংশনের নাম [B1]

t=1:n=[A1]:While n:t=t*-Application.Run(""&[B1],n Mod 1E3):n=Int(n/1E3):Wend:?t

ব্যবহারের উদাহরণ

কোনও সর্বজনীন মডিউলে, এই ক্ষেত্রে ইনপুট ফাংশন f() সংজ্ঞায়িত করা হয়।

Public Function f(ByVal n As Integer) As Boolean
    Let f = (n Mod 2 = 0)
End Function

ইনপুট ভেরিয়েবল সেট করা আছে।

[A1]=2902414    ''  Input Integer
[B1]="f"        ''  input function

তত্ক্ষণাত উইন্ডো ফাংশন বলা হয়।

t=1:n=[A1]:While n:t=t*-Application.Run(""&[B1],n Mod 1E3):n=Int(n/1E3):Wend:?t
 1              ''  Function output (truthy)

1

চুনি , 37 বাইট

g=->f,n{f[n%x=1000]&&(n<x||g[f,n/x])}

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

একটি পুনরাবৃত্ত লাম্বদা, ফাংশন এবং পূর্ণসংখ্যার কাজ করে এবং বুলিয়ান ফেরত।

36 বাইট (কেবলমাত্র ইতিবাচক এন)

g=->f,n{n>0?f[n%k=1000]&&g[f,n/k]:1}

এই সংস্করণ 1সত্যের জন্য ফিরে আসে ,false । দুর্ভাগ্যক্রমে এটি ব্যর্থ হতে পারে যখনn = 0

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


আমি মনে করি g=এটি গণনা করতে হবে যদি এটি পুনরাবৃত্ত হয়
Asone Tuhid

@ অ্যাসুনটুইহিদ ওহ, এটি বোধগম্য হয়। আমি এটি যুক্ত করব
benj2240

এছাড়াও, চেষ্টা এই (-1 বাইট), এটা ফেরৎ 1truthy মান হিসাবে
Asone Tuhid

এটি আমার মস্তিষ্ককে খানিকটা কুঁচকে গেল ... নিজেকে বোঝানোর জন্য আমাকে কিছুটা ঘোরাঘুরি করতে হয়েছিল এটি সব ক্ষেত্রেই কাজ করেছে। ধন্যবাদ!
বেনজ 2240

আমি ভুল ছিলাম, এই সংস্করণটি g[->n{n>0},0](রিটার্নের true) জন্য কাজ করে না । এটি কেবলমাত্র ব্যর্থ হলে ইনপুটটি 0কিন্তু প্রশ্নটি "অ-নেতিবাচক" বলে তাই আপনার ৩ 37-এ ফিরে যেতে হবে sorry দুঃখিত
Asone Tuhid

1

অ্যাপলসিড , 51 বাইট

(lambda(n f)(all(map f(or(to-base 1000 n)(q(0))))))

বেনামে ল্যাম্বদা ফাংশন যা একটি সংখ্যা এবং একটি ফাংশন নেয় এবং একটি বুলিয়ান মান দেয়।

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

(lambda (n f)         ; Function with parameters n and f
 (all                 ; Return true if all elements of this list are truthy:
  (map f              ; Map the function f to each element of
   (or                ; This list if it is nonempty:
    (to-base 1000 n)  ; Convert n to a list of "digits" in base 1000
    (q (0))           ; Or if that list is empty (when n=0), then use the list (0) instead
   ))))

1

++ , 15 বাইট যুক্ত করুন

L,1000$bbbUª{f}

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

একটি ফাংশন প্রয়োজন fটিআইও হেডারে ঘোষণার ।

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

D,f,@,0.5^i2^A=	; Declares a function 'f' to check if a perfect square
		; E.g. 25 -> 1; 26 -> 0

L,		; Declare the main lambda function
		; Example argument: 		[25121]
	1000$bb	; Convert to base 1000	STACK = [[25 121]]
	bUª{f}	; Is 'f' true for all?	STACK = [1]
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.