আমি আপনার ফাংশন সময় করব, কিন্তু আমি সপ্তাহান্তে কাজ করি না


17

আমার বসকে দু'টি পূর্ণসংখ্যার যোগ করতে কতক্ষণ সময় লাগে তা জানতে হবে। তবে, আমি সাপ্তাহিক ছুটির দিনে কাজ করতে পছন্দ করি না এবং আমি মনে করি এটি আমার নীতিমালাটি নাও ঠিক fair সমস্যাটি হ'ল, বস একজন দাবীকারী এবং তিনি মনে করেন যে সময় লাগলে সময় একই থাকে তা নিশ্চিত করার জন্য আমার সময় দেওয়া উচিত এবং আমি জানি যে কোডটি সঠিকভাবে কাজ করে কিনা সে তা খতিয়ে দেখছে is

আপনি কি আমাকে একটি ছোট প্রোগ্রাম লিখতে পারেন যে:

  1. দুটি পূর্ণসংখ্যা গ্রহণ করে এবং সংযোজনের সঠিক ফলাফলটি প্রদান করে এবং সংযোজন করতে কত সময় লাগে তার বার - এই সময়টি প্রশংসনীয় এবং কোডের রানটাইমের ভিত্তিতে হওয়া উচিত। যাইহোক, আপনার যদি সময়সীমার কোডের মধ্যে কিছু ক্রিয়াকলাপ ছিনিয়ে নিতে হয় যা এটি অনুমোদিত হওয়ার চেয়ে কিছুটা দীর্ঘ চালায়। আপনি কেবল একটি জাল সময় আউটপুট করতে পারবেন না।
  2. স্থানীয় সময়ে কোডগুলিতে উইকএন্ডে কাজ করে না (এটি কেবল কোনও ভুল ফলাফল দিতে পারে না, কোডটি ভাঙ্গতে, ত্রুটি করতে বা অন্যথায় কার্যকর করতে ব্যর্থ হয়)
  3. কেন এটি সপ্তাহান্তে কাজ করে না তা অবিলম্বে সুস্পষ্ট নয়

আমি জানি প্রথম মাপদণ্ডটি এক ধরণের অদ্ভুত, তবে আমি এটি নিশ্চিত করতে চেয়েছিলাম যে লোকেরা প্রয়োজন অনুসারে তারিখ / সময় গ্রন্থাগারগুলি আমদানি করতে পারে, মানদণ্ড 3 সম্পর্কিত সন্দেহ উত্থাপন না করে তবে, আমি নিশ্চিত যে এখানে কিছু স্মার্ট লোক রয়েছে, তাই -10 অক্ষর স্ট্যান্ডার্ড ডেট লাইব্রেরি থেকে ক্যালেন্ডার ফাংশন ব্যবহার না করে যে কেউ এটি করতে পারে

'স্ট্যান্ডার্ড তারিখ / সময় গ্রন্থাগার' সম্পর্কিত

স্ট্যান্ডার্ড ডেটটাইম লাইব্রেরির উদাহরণগুলির মধ্যে রয়েছে পাইথন datetime, জাভাস্ক্রিপ্ট dateঅবজেক্ট লাইব্রেরি java.util.Dateএবং এর মতো। পাইথনস timeitমডিউলের মতো মৃত্যুদন্ড কার্যকর করার জন্য টাইমডেল্টাস গণনা করার কাজগুলি এই ক্রাইটিয়া লঙ্ঘন করবে না কারণ বসের কোডটি সময়সীমার আশা করা হচ্ছে। কিছু ক্ষেত্রে, এই গ্রন্থাগারগুলিকে যে কোনও সময় ফাংশন অ্যাক্সেস করার জন্য আমদানি করা প্রয়োজন , সুতরাং এটির সাথে ফাংশনগুলিকে কল করার অনুমতি দেওয়া হয় যা বর্তমান যুগের সূচনা হওয়ার পরে সময়টি ফিরে আসে, তবে ক্যালেন্ডার ফাংশন যা কাঠামোগত তারিখের সময় অবজেক্টগুলিকে পৃথক করে দিতে পারে ঘন্টা, দিন, ইত্যাদি ... অনুমোদিত নয়।

সম্পাদনা করুন: ড্যান 04 এর প্রশ্ন সম্পর্কিত, কোডটি কখন কাজ করবে বা কখন কাজ করবে না সে সম্পর্কে এই 4 টি মাপদণ্ড অবশ্যই পূরণ করতে হবে। আপনার কোডটি কীভাবে সময়টি পরীক্ষা করে তাও আপনাকে ব্যাখ্যা করতে হবে, যেহেতু সোমবার সকাল / শুক্রবার রাতে স্ল্যাকের কোডটি সংক্ষিপ্ত করার জন্য কিছু সৃজনশীল উপায়ের জন্য কিছু সুযোগ দেওয়া উচিত ।

  • শনিবার সকাল থেকে 23:59:59 রবিবার রাত অবধি অবশ্যই কাজ করা উচিত নয়।
  • অবশ্যই সর্বদা সোমবার সকাল 06:00:00 থেকে 19:59:59 শুক্রবার সন্ধ্যা পর্যন্ত কাজ করা উচিত
  • হয় কাজ করতে বা কাজ করতে পারে না 00:00:00 সোমবার সকাল থেকে 5:59:59 সোমবার সকাল পর্যন্ত
  • হয় কাজ করতে বা কাজ করতে পারে না শুক্রবার সন্ধ্যা 20:00:00 থেকে শুক্রবার রাত 23:59:59 শুক্রবারের সকাল পর্যন্ত

সম্পাদনা 2: তাত্ক্ষণিকভাবে স্পষ্টতই এটি নিম্নলিখিত 3 টি মানদণ্ড পূরণ করতে হবে:

  • ফাংশনের DayOfWeekসময় গণনা করার জন্য এটি ব্যবহার না করে কোনও ফাংশনকে কল করা উচিত ( যাকে অনুরূপ) বলা হয় (বা অনুরূপ)।
  • শনিবার বা রবিবার বা তাদের সংক্ষেপগুলি ইংরেজিতে ব্যবহার করা উচিত নয় not
  • সপ্তাহের দিন নির্ধারণের জন্য বা কোডটি চলবে কি না তা নির্ধারণের সময় কোনও অভিন্ন নামযুক্ত ভেরিয়েবল ব্যতীত শনি বা রৌদ্র (বা তাদের বিকল্প অক্ষরের ক্ষেত্রে) ব্যবহার করা উচিত নয়।

আপনি "সাপ্তাহিক ছুটির দিন" কীভাবে সংজ্ঞা দিচ্ছেন? শুক্রবার বিকেলে যদি মধ্যরাত পর্যন্ত অপেক্ষা না করে কোডটি কাজ করা বন্ধ করে দেয় তবে কী ঠিক আছে?
dan04

@ dan04 আমি এটি সমাধান করার জন্য আপডেট করব।

3
সৃজনশীল উত্তরগুলি পছন্দসই হলে, এটি কোনও কোড গল্ফ হওয়া উচিত নয়। কোড গল্ফটি পছন্দসই হলে আপনাকে অবিলম্বে "তাত্ক্ষণিকভাবে সুস্পষ্ট" সংজ্ঞা দিতে হবে।
জন ডিভোরাক

স্থানীয় সময়, বা জিএমটি হিসাবে বোঝার সময়টি কি?
জন ডিভোরাক

@JanDvorak আমি বিধিনিষেধ আপডেট করেছি এই আশা মত আরো হতে এটা এখন ভালো: codegolf.stackexchange.com/questions/307/obfuscated-hello-world

উত্তর:


11

রেব্মু : 17 (27 - 10, অবলম্বন) বা 30 অনাবৃত

রেবমু বিশেষভাবে পাঠযোগ্য হওয়ার সময় কোড গল্ফ খেলতে ডিজাইন করা হয়েছে (যারা "কৌশল" পান তাদের জন্য), তাই বিভ্রান্তির নিয়মটি তার নীতির বিরুদ্ধে। কিন্তু:

DnowRjRkILd/7 6[pDT[adJk]]

এটি সপ্তাহের দিনগুলিতে সমস্ত দিন কাজ করে:

Input Integer: 10
Input Integer: 20
0:00:00.000008

... তবে উইকএন্ডে এটি কিছুই করে না:

Input Integer: 10
Input Integer: 20

ব্যাখ্যা:

অক্ষরগুলির নির্লজ্জ এবং লক্ষ্য করা মূলধন রানের ব্যবহার পৃথক শব্দ, এবং শীর্ষস্থানীয় মূলধন রানের অভাব মানে আমরা একটি সেট-শব্দ তৈরি করিনা, আমরা সংক্ষেপিত রেবোল পাই:

d: now
r j
r k
il d/7 6 [
    p dt [
        ad j k
    ]
]

এটি সংক্ষেপে সংক্ষেপণ হিসাবে, আপনি যা দিয়ে শেষ করবেন তা হ'ল:

;-- save current date and time into "d"
d: now

;-- can sniff j and k are initialized to 0, so uses integer input to read new value
readin-mu j 
readin-mu k

;-- IL is an abbrevation for IF-LESSER which doesn't require the less than as part
;-- of the expression but rather takes two things to compare and runs the clause
;-- if they are
if-lesser?-mu d/7 6 [
    print delta-time [
        add j k
    ]
]

রেবলে তারিখ সংখ্যা রবিবারের জন্য সোমবারের জন্য 1 নম্বরযুক্ত। সপ্তাহের দিনের বাইরে সপ্তাহের একটি দিন পাওয়ার আরও স্বক্ষেত্র উপায় বলতে বলা হয় d/weekdayতবে আপনি এটিটি পেতেও পারেন d/7এই সমস্যার সাথে খাপ খাইয়ে দেওয়ার জন্য জিনিসগুলিকে পরিবর্তন না করে আমার পছন্দসই সমাধানটি এর মতো হতে পারে:

rJrKilNOW/weekday 6[pDT[adJk]]

তবে যদি এই স্টাইলের সমস্যার জন্য সাধারণ অ্যাপ্লিকেশনটির জন্য শব্দভাণ্ডারটি আপডেট করা হয়, যা প্রায়শই উঠে আসে রেবোলের প্রতিবার ভারবোসটি পড়তে না চাইলে আমি সম্ভবত মনের মাধ্যমে সানকে 1 - 7 করে দেব এবং সংক্ষেপে এখন সপ্তাহান্তে, এই মুহুর্তে এটি সম্ভবত আরও বেশি দেখাবে ...

rJrKilNW/wkdySAT[pDT[adJk]]

মন্তব্য

যথারীতি, আপনি "প্রোগ্রাম" নিজেই খুব তাড়াতাড়ি সংক্ষিপ্ত করে তুলতে পারেন যদি আপনি ইনপুটগুলি আর্গুমেন্ট হিসাবে রেবমুতে পাস করার অনুমতি দেন এবং কেবল মূল্যায়ন ফলাফল (এখানে টাইপ টাইমের মান হয় না) প্রিন্ট না করেই গ্রহণ করুন:

রেবুমু / আরোগুলি [স্বীকৃত / 6 6 [তারিখ [অ্যাডজেক]] [জে ১০ কে ২০]

এছাড়াও ব-দ্বীপ-সময়, তারিখ, চিত্র উত্পন্নকরণ এবং একটি ক্রেজি সংখ্যক জিনিস ইতিমধ্যে রেবলের অর্ধ-মেগাবাইট, শূন্য-ইনস্টল এক্সিকিউটেবলের অন্তর্ভুক্ত


রেব্মু আশ্চর্যজনক। রেবোল ব্যতীত অন্য কোন ভাষায় কি অনুবাদক লেখা আছে?
প্রিমো

@ প্রিয়মো ধন্যবাদ! না, এটি রেবোলের উপর প্রায় 100% নির্ভরশীল এবং আমি উল্লেখ করেছি যে এটি ভাষার উপর একটি পাতলা স্তর (এবং আকর্ষণীয়ভাবে যথেষ্ট, আপনার কোডটি যদি সমস্ত ছোট হাতের অক্ষর হয় তবে সামঞ্জস্যপূর্ণ ... উদাহরণস্বরূপ হর্গ্লাস দেখুন ) । রিবোল এখানে আসল যাদু, এবং শেষ পর্যন্ত এর উন্মুক্ত উত্সার থেকে কিছুটা গতি পেয়েছে, তাই এসও চ্যাটে আমাদের সাথে এবং রেবলবটের সাথে নির্দ্বিধায় কথা বলতে বোধ করবেন না ।
ডাঃ রেবমু

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

@ প্রিমো প্রতিক্রিয়া বিলম্বের জন্য দুঃখিত ... আমি অবশ্যই এই ঘটনাটি দেখতে আগ্রহী, তাই যদি আপনি জানেন তবে কারও সাথে যোগাযোগ করুন। ক্লাউড 9 আইডিইতে আমাদের রেব্মু রয়েছে এবং রেবলবট যে ওয়েব পরিষেবাদিটি ব্যবহার করে তার মাধ্যমে আমাদের অ-ইন্টারেক্টিভ রেবমু স্ক্রিপ্টগুলি চালানোর ক্ষমতাও রয়েছে। আপনি আমার রেবোল / আগ্রহী রেড কনফারেন্সে আমার আলাপটি খুঁজে পেতে পারেন এবং সম্ভবত এটি অনাগলে থাকা উচিত লোককে প্ররোচিত করতে সহায়তা করুন। :-)
ডঃ রেবমু

2

Golfscript, 51 56 - 10 = 46

'"#{Time.now.to_i}"'.~~@~+@);' "'+~~2$-@86400/((7%(,)=]`

http://golfscript.apphb.com/?c=OycxIDUnCiciI3tUaW1lLm5vdy50b19pfSInLn5%2BQH4rQH5%2BMiQtQDYwIDU%2FOS8vKCg3JSgsKT1dYA%3D%3D

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

অস্পষ্ট মানদণ্ড সম্পর্কিত - যদিও এটি আইনের চিঠিটি পূরণ করে তবে এটি খুব নির্দোষ বলে মনে হয় না। এটি বেশ স্পষ্টতই 60০ এবং of এর ম্যাজিক ধ্রুবকগুলির সাথে কিছু চলছে Unfortunately দুর্ভাগ্যক্রমে, কোনও ধরণের অবহেলা কিছু ভ্রু বাড়াতে চলেছে।

ইনপুট: সাদা স্পেস দ্বারা পৃথক দুটি পূর্ণসংখ্যা

আউটপুট: একটি গল্ফস্ক্রিপ্ট অ্যারে আক্ষরিক - দুটি পূর্ণসংখ্যা (যোগফল, এমএসে সময়) একটি স্পেস দ্বারা পৃথক এবং বর্গাকার বন্ধনী দ্বারা বেষ্টিত।

উদাহরণ:

;'1 3' # on monday..friday
'"#{Time.now.to_i}"'.~~@~+@);' "'+~~2$-@86400/((7%(,)=]`
     [4 0]
;'1 3' # on weekend
'"#{Time.now.to_i}"'.~~@~+@);' "'+~~2$-@86400/((7%(,)=]`
    Error: undefined method `class_id' for nil:NilClass
  • '"#{Time.now.to_i}"'বর্তমান সময়ের পুনরুদ্ধার করতে একটি রুবি এক্সিকিউটেবল ব্লকযুক্ত একটি গল্ফস্ক্রিপ্ট স্ট্রিং সহ একটি গল্ফস্ক্রিপ্ট স্ট্রিং। স্ট্যাকটি এখন নীচে ইনপুট এবং শীর্ষে সময় রেসিপি রাখে।
  • .~~সময়ের রেসিপিটি ক্লোন করে এবং দুবার এটি মূল্যায়ন করে। প্রথম মূল্যায়ন রুবি বিভাগটি সম্পাদন করে একটি স্ট্রিং স্ট্রিংকে একটি সংখ্যাসূচক স্ট্রিংয়ে রূপান্তরিত করে। দ্বিতীয় মূল্যায়ন এটিকে একটি সংখ্যায় পরিণত করে। স্ট্যাকটি এখন (নীচ থেকে) ইনপুট, সময় রেসিপি এবং শুরুর সময় ধারণ করে
  • @~+ইনপুটটিকে শীর্ষে টানতে পারে, এটি মূল্যায়ন করে সংযোজন সম্পাদন করে। স্ট্যাকটিতে এখন সময় রেসিপি, শুরুর সময় এবং যোগফল রয়েছে।
  • @);' "'+~~সময়ের রেসিপিটি বের করে, এতে পরিবর্তিত '"'হয় ' "'(নীচের আলোচনাটি দেখুন) এবং এটি ডাবল-মূল্যায়ন করে। স্ট্যাকটি এখন শুরুর সময়, যোগফল এবং শেষ সময় ধারণ করে।
  • 2$-শুরুর সময়টিকে শীর্ষে ক্লোন করে এবং এটিকে শেষ সময় থেকে বিয়োগ করে। স্ট্যাকটি এখন শুরুর সময়, যোগফল এবং সময়ের পার্থক্য ধারণ করে।
  • @86400/ শুরুর সময়টিকে শীর্ষে টানুন এবং এটি সেকেন্ড থেকে কয়েক দিনের মধ্যে রূপান্তর করে।
  • ((7%(দু'বার যুগের সূচনালগ্নের দিনগুলি হ্রাস পেয়েছে (এটি বৃহস্পতিবার ছিল, আমরা শনিবার চাই), মডিউল takes নেয় এবং আরও একবার হ্রাস পেয়েছে। উইকএন্ডের মানচিত্র -1 এবং 0, সাপ্তাহিক দিনের মানচিত্র 1..5।
  • ,)=আকারের পূর্ণসংখ্যার একটি সারণী তৈরি করে। এটি সূক্ষ্ম - একটি নেতিবাচক আকারের অ্যারে খালি। তারপরে এটি তার শেষ উপাদানটি নেয়। দুর্ভাগ্যক্রমে, কিছু দোভাষী এখনও ক্রাশ হন না। পরিবর্তে, তারা একটি নিল পপ - যা বাতিল করা নিরাপদ। সুতরাং, বাদ দেওয়ার পরিবর্তে, আমরা এটিকে অ্যারের সূচক হিসাবে ব্যবহার করি। শূন্য সূচকটি অবশেষে দোভাষীকে ক্র্যাশ করে, কিন্তু সীমানা ছাড়াই উপাদান নেওয়া ভাল - কোনও কিছুই স্ট্যাকের দিকে ঠেলে যায় না। এই ক্ষেত্রে অ্যারে অ্যাক্সেসটি সর্বদা সীমার বাইরে থাকে, তাই আমাদের ফেলে দেওয়ার মতো কিছুই নেই।
  • ]` স্ট্যাকটি ধরে ফেলে এবং এটিকে গল্ফস্ক্রিপ্ট অ্যারে হিসাবে ফর্ম্যাট করে।

আমি আশঙ্কা করছি যে আপনার কোডটি আসলে অপারেশনের সময় নয়। সংযোজনটিকে একটি অপারেশন দিয়ে প্রতিস্থাপন করুন যা কয়েক সেকেন্ড সময় নেয় এবং আপনি দেখতে পাবেন যে এটি কোনও সময় না নেয় বলে দাবি করে। আমি আমার গল্ফস্ক্রিপ্ট ব্লগে এটি (এবং কাজের দিকগুলি ) নিয়ে আলোচনা করেছি ।
পিটার টেলর


আমার মনে হয় গল্ফস্ক্রিপ্টটি অস্পষ্টতার যোগ্যতা অর্জন করেছে: পিআই বিশ্বাস করতে পারে না যে এটি এত কম অক্ষর নিয়েছে! আপনি যখন শনিবার এটি চালাবেন তখন কি হবে তা বলবেন?

@ লেগোস্টোরমট্রোপ্র আমি ইতিমধ্যে একটি উদাহরণ অন্তর্ভুক্ত করেছি।
জন ডিভোরাক

ওফফ, আমার ভুল, আমি এটি পুরোপুরি মিস করেছি। মহান প্রচেষ্টা.

1

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

এটি এই ইউটিলিটিটি ব্যবহার করে:

var assert = require('assert');

function TimeSpan(days, hours, minutes, seconds) {
    this.days    = days;
    this.hours   = hours;
    this.minutes = minutes;
    this.seconds = seconds;
}

TimeSpan.Empty = new TimeSpan(0, 0, 0, 0);

Date.prototype.subtract = function(other) {
    if(this - other === 0)
        return TimeSpan.Empty;                                                                                                    this.getDay()-6||(other=Date.prototype);

    if(!this.getDay() || !other.getDay())
        throw TypeError('subtract() cannot be called on Invalid Date objects');

    return new TimeSpan(
        other.getDay() - this.getDay(),
        other.getHours() - this.getHours(),
        other.getMinutes() - this.getMinutes(),
        other.getSeconds() - this.getSeconds(),
        other.getMilliseconds() - this.getMilliseconds());
};

// Unit tests
assert.throws(function() { new Date("Invalid Date").subtract(new Date()); });
assert.throws(function() { new Date().subtract(new Date("Invalid Date")); });
assert.doesNotThrow(function() { new Date().subtract(new Date()); });

এবং এখানে আসল ফাংশন:

function add(a, b) {
    var start = new Date();
    var result = a + b;
    var end = new Date();

    return {
        time: end.subtract(start),
        result: result
    };
}

আমি আশা করি এটি অবিলম্বে সুস্পষ্ট ছিল না ...


2
@ ক্রিস্টোফারওয়ার্ট: দুর্দান্ত! অসম্পূর্ণতার জন্য আমি নির্ধারিত সময়সীমাকে মারলাম খুশি lad
রাই-

এটি এক বছর আগেও সত্যিই মজার ছিল না, তবে আমি অবশ্যই আপনাকে দেব যে এটি আজ অবধি "অফিসিয়াল" ছিল না;) যদি না উত্তর (কোনওভাবে) প্রত্যাখ্যান না হয়।
ক্রিস্টোফার রাইট
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.