দৃac়চেতা থাই ক্যালেন্ডার


13

ইন থাই ক্যালেন্ডারে 2560. দ্য থাই ক্যালেন্ডারে বছর 2017 অনুরূপ সবসময় 543 বছর গ্রেগরিয়ান পঞ্জিকা দূরে রয়েছে।

পর্যবেক্ষক কোডারগণ নোট করবেন যে 2560 এর সমান 2^9 * 5, অন্য কথায় এটি 10 ​​প্রধান উপাদান রয়েছে। এটি আর 896 বছর আর ঘটবে না! আমরা যদি এক দশকে দুর্বল বলি তবে এর যদি দশটি প্রধান কারণ থাকে।

একটি প্রোগ্রাম লিখুন যা যদি সিস্টেম ক্লকের উপর ভিত্তি করে থাই বর্ষপঞ্জি ব্যবহার করে চলতি বছর নির্লজ্জ হয় এবং অন্যথায় একটি মিথ্যা মান থাকে তবে সত্যবাদী মানটি প্রকাশ করে।

পরীক্ষার কেস:

  • যদি প্রোগ্রামটি 2017 চলমান থাকে, true
  • প্রোগ্রামটি 2018 থেকে 2912 বছরের যে কোনও সময় চলমান থাকলে, false
  • যদি প্রোগ্রামটি 2913 চলাকালীন চলমান থাকে true(2913 + 543 = 2^7 * 3^3)

যদি কোনও ভাষা ব্যবহার করে বা কোনও সিস্টেম ঘড়ি ছাড়াই কোনও পরিবেশে চলমান থাকে তবে বর্তমান সময়টিকে ইনপুট হিসাবে গ্রহণ করা কি গ্রহণযোগ্য?
টটলেটম্যান

উত্তর:


6

বাশ + কোর্টিলস, 35 বাইট

factor $[`date +%Y`+543]|awk NF==11

আউটপুট হয় একটি খালি খালি স্ট্রিং (সত্যবাদী) বা একটি খালি স্ট্রিং (মিথ্যা)।

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

বিকল্প সংস্করণ: 37 বাইট।

date -d 543year +%Y|factor|awk NF==11

গল্ফের মতো নয়, তবে আমি এটি পছন্দ করি।

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

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

পাটিগণিতের সম্প্রসারণের $[তারিখ +% Y বর্তমান (পূর্ণ) বছর পাওয়ার জন্য +543]সম্পাদন date +%Yকরে এবং বছরে 543 যোগ করে।

ফ্যাক্টর যোগফলকে যুক্তি হিসাবে গ্রহণ করে এবং এটি প্রধান কারণকে মুদ্রণ করে: প্রথমে সংখ্যাটি চিহ্নিত করতে হবে, তারপরে স্বতন্ত্র প্রধান উপাদানগুলির একটি তালিকা।

অবশেষে, ডাব্লু ইনপুট ফিল্টার করে, ঠিক ১১ টি ক্ষেত্রের সাথে কেবলমাত্র লাইনগুলি মুদ্রণ করে (সংখ্যাটি আরও 10 প্রধান উপাদান)।





4

গণিত, 37 31 বাইট

ল্যানলক 4 এর কারণে 5 বাইট সংরক্ষণ করা হয়েছে ।

PrimeOmega[#&@@Date[]+543]==10&

বেনামে ফাংশন। কোনও ইনপুট এবং রিটার্ন Trueবা Falseআউটপুট হিসাবে গ্রহণ করে না ।


Nowঅন্তর্নিহিত হয়। আপনি ব্যবহার করতে পারেন DateValue@"Year"
মার্টিন ইন্ডার

&আপনার শেষে কি দরকার ? এছাড়াও, Date[][[1]]কয়েক বাইটের চেয়ে ছোট DateValue@"Year"(যদি আপনি Dateএটি অপ্রচলিত মনে করেন না )।
একটি গাছ নয়

1
আপনি #&@@Date[]এর জায়গায় একটি বাইট সংরক্ষণ করতে পারেন Date[][[1]]। এছাড়াও, আমি মনে করি "ম্যাথমেটিকিয়া + আরপিএল পরিবেশ" এখানে একটি বৈধ প্রোগ্রামিং ভাষা, যার জন্য আপনার সমাপ্তির দরকার নেই &
গ্রেগ মার্টিন

@ গ্রেগমার্টিন ওহ ভাল, আমি এর আগে কখনও বড় অনুরাগী
হইনি


2

জাপট , 18 14 13 বাইট

543+Ki¹k l ¥A

ETH প্রোডাকশনগুলির জন্য 4 বাইট সংরক্ষণ করা। ওবারাকনকে ধন্যবাদ 1 বাইট সংরক্ষিত

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


চমৎকার উত্তর! আপনি চারপাশে জিনিসগুলি সরিয়ে A¥º543+Ki¹k l543+Ki¹k l ¥A
অলিভার

@ ওবরকন ধন্যবাদ! কেন ¹ব্যবহার করা হয়, )একই জিনিস না?
টম

হ্যাঁ, আপনি )পরিবর্তে ব্যবহার করতে পারেন ।
অলিভার

2

পাইথন 2 , 92 89 বাইট

-3 বাইট জোনাথন অ্যালানকে ধন্যবাদ

import time
y=time.gmtime()[0]+543
c=i=1
exec"i+=1\nwhile 1>y%i:y/=i;c-=1\n"*y
print-9==c

এটি অনলাইন চেষ্টা করুন!
বছর অবধি Iterate, প্রধান উপাদানগুলি বের করা (এবং couting)।
এক্সিকিউটিভ লাইনটি সমান:

for i in range(2,y):
 while not(y%i):
  y=y/i
  c=c-1

একটি 3 বাইট সংরক্ষণ করুন: c=i=1; c-=1; print-9==c
জোনাথন অ্যালান

1

অক্টাভা , 31 বাইট

nnz(factor(clock()(1)+543))==10

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

দুটি কৌশল এখানে ব্যবহৃত:

  • clock()(1)সরাসরি আউটপুট ইনডেক্স করতে clock( clock(1)কাজ করে না)
  • nnzপরিবর্তে numel, সমস্ত এন্ট্রি ননজারো হওয়ার গ্যারান্টিযুক্ত।

বিকল্প সংস্করণ, একই বাইট গণনা

nnz(factor(max(clock)+543))==10

এই সংস্করণটি কেবল বছরের বেশি সময় ধরে ব্যবহার করা যেতে পারে 30, তবে স্পষ্টতই সময় ভ্রমণের বিষয়টি উপেক্ষা করা যাতে এতে সমস্ত বছর অন্তর্ভুক্ত থাকে যেখানে প্রোগ্রামটি কার্যকর করা যায়। এটি মতলব-তেও কাজ করে।


1

পিএইচপি, 111 68 66

$a=date(Y)+543;for($i=2;$i<$a;)$b+=$a%$i?!++$i:!!$a/=$i;echo$b==9;

সরাসরি প্রধান কারণগুলির সংখ্যা গণনা করে।

$a=date(Y)+543;             // current year
for($i=2;$i<$a;)            // while $i lower than the year
$b+=$a%$i?!++$i:!!$a/=$i;   // if $i divides $a: $a/=$i and ++$b | if not: ++$i
echo$b==9;                  // output if it has 10 prime factors

পুরানো ধারণা: 111 90

for($i=1;++$i<1e3;)for($j=1;++$j<1e3;)${$i*$j}=($$i?:1)+($$j?:1);echo${date('Y')+543}==10;

এটি একটি প্রাইম ফ্যাক্টরেটরিং বিল্টিন ব্যবহার করে না তবে মূলত কোনও সংখ্যার <10000 সংখ্যার প্রাথমিক কারণগুলির সংখ্যা পেতে একটি গণনা মূল চালনী ব্যবহার করে না PH পিএইচপি এই চারটি ডিজিটের বছরের জন্য এই মানচিত্রগুলি সরবরাহ করে date('Y'):

for($i=1;++$i<1e3;)          // for each number smaller sqrt(1e4)
for($j=1;++$j<1e3;)          // do sqrt(1e4) times
${$i*$j}=($$i?:1)+($$j?:1);  // n_factors[i*j] = n_factors[i] + n_factors[j]
echo${date('Y')+543}==10;          // output 1 if the current year has 10 prime factors or nothing if it doesn't

1
-2 বাইট: Yসঙ্গে কোন কোট প্রয়োজন -nr
তিতাস

1
আপনার পুরানো ধারণা: কেন শুরু? $a[$i*$j]=($a[$i]?:1)+($a[$j]?:1)13 বাইট সংরক্ষণ $j=++$i<1e4একটি বাঁচায় এবং Yআরও দুটি জন্য কোন উদ্ধৃতি ।
তিতাস


0

ব্যাচ, 123 বাইট

@set/ay=%date:~-4%+543,n=d=2
:l
@set/ar=y%%d,d+=1
@if %r%==0 set/ay/=d-=1,n+=1
@if %y% gtr 1 goto l
@if %n%==12 echo 1

স্ক্রিপ্টটি dateচালানোর আগে ম্যানুয়ালি ওভাররাইড করে স্ক্রিপ্টটি নকল করতে পারেন ।


0

জে , 18 বাইট

প্রোগ্রাম বডি:

10=#q:543+{.6!:0''

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

10= দশটি সমান

# এর ট্যালি

q: প্রধান কারণ

543+ এই নম্বর যোগ করা

{. মাথা (প্রথম আইটেম, অর্থাত্ বছর)

6!:0'' তারিখ (ওয়াইএমডি এইচএমএস হিসাবে)


0

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

f=(y=+Date().slice(11,15)+543,d=2,n=10)=>y>1?y%d?f(y,d+1,n):f(y/d,d,n-1):!n

আমার ব্যাচের উত্তর পোর্ট। আপনি যদি একটি নির্দিষ্ট পরীক্ষা করতে চান তবে থাই ক্যালেন্ডার বছরে পাস করুন । সম্পাদনা: @ ডান্ডাভিসকে ধন্যবাদ 4 টি বাইট সংরক্ষণ করা হয়েছে।


কীভাবেnew Date().getYear()+2443
ম্যাট

@ ম্যাট উগ, এমডিএন যা বলে তা তাই নয় ... তবে এটি অবহেলা করা হয়েছে, সুতরাং আমি নিশ্চিত না যে আমার যেভাবেই হোক এটি ব্যবহার করা উচিত।
নীল

ক্ষণস্থায়ী 2017 == false? সংক্ষিপ্ত: +Date().slice(11,15)+543এবং এর y?পরিবর্তেy>1
ডান্ডাভিস

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