मैं आपके समारोह का समय लूंगा, लेकिन मैं सप्ताहांत नहीं काम करता हूं


17

मेरे बॉस को यह जानना होगा कि दो पूर्णांकों को एक साथ जोड़ने में कितना समय लगता है। लेकिन, मुझे सप्ताहांत काम करना पसंद नहीं है, और मुझे लगता है कि इसका निष्पक्ष होना मेरा कोड भी नहीं है। समस्या यह है कि, बॉस एक मांग करने वाला लड़का है और सोचता है कि मुझे समय के साथ यह सुनिश्चित करने के लिए समय देना चाहिए कि यह समान रहता है, और मुझे पता है कि वह जांचने जा रहा है कि क्या कोड ठीक से काम करता है।

क्या आप मुझे एक छोटा कार्यक्रम लिख सकते हैं:

  1. दो पूर्णांकों को स्वीकार करता है, और जोड़ और समय का सही परिणाम देता है और इसके अलावा कितना समय लगता है - इसके अलावा यह समय प्रशंसनीय और कोड के रनटाइम के आधार पर होना चाहिए। हालाँकि, अगर आपको समयबद्ध कोड के बीच कुछ संचालन को छलनी करने की आवश्यकता होती है जो इसे अनुमति देने की तुलना में थोड़ी देर चलती है। हालाँकि आप नकली समय का उत्पादन नहीं कर सकते।
  2. स्थानीय-समय कोड में सप्ताहांत पर काम नहीं करता है (यह सिर्फ एक गलत परिणाम नहीं दे सकता है, कोड को तोड़ने, त्रुटि या अन्यथा निष्पादित करने की आवश्यकता है)
  3. तुरंत स्पष्ट नहीं है कि यह सप्ताहांत पर काम क्यों नहीं करता है

मुझे पता है कि पहली कसौटी अजीब है, लेकिन मैं यह सुनिश्चित करना चाहता था कि लोग मानदंड के लिए संदेह उठाए बिना, यदि आवश्यक हो तो दिनांक / समय पुस्तकालयों का आयात कर सकें। हालांकि, मुझे यकीन है कि कुछ स्मार्ट लोक हैं, इसलिए -10 वर्ण मानक तिथि पुस्तकालयों से कैलेंडर कार्यों का उपयोग किए बिना जो कोई भी ऐसा कर सकता है

'मानक तिथि / समय पुस्तकालयों' के बारे में

मानक डेटाटाइम पुस्तकालयों के उदाहरणों में अजगर datetime, जावास्क्रिप्ट dateऑब्जेक्ट लाइब्रेरी java.util.Dateऔर जैसे शामिल हैं। अजगर timeitमॉड्यूल के रूप में निष्पादन के लिए समयबद्धता की गणना करने के लिए कार्य इस संकट का उल्लंघन नहीं करेंगे क्योंकि बॉस को उम्मीद है कि कोड समयबद्ध होगा। कुछ मामलों में, इन पुस्तकालयों को किसी भी समय कार्यों का उपयोग करने के लिए आयात करने की आवश्यकता होगी , इसलिए इसके कार्यों को कॉल करने की अनुमति है जो वर्तमान युग की शुरुआत के बाद से पूर्णांक के रूप में लौटते हैं, लेकिन कैलेंडर फ़ंक्शन जो संरचित डेटाइम वस्तुओं को वापस करते हैं जो अलग दे सकते हैं घंटे, दिन, आदि ... की अनुमति नहीं है।

संपादित करें: Dan04 के प्रश्न के बारे में, कोड को इन 4 मानदंडों को पूरा करना होगा जब यह काम करेगा या नहीं। आपको यह भी बताना चाहिए कि आपका कोड समय की जांच कैसे करता है, क्योंकि सोमवार की सुबह / शुक्रवार की रात को कोड को छोटा करने के लिए कुछ रचनात्मक तरीकों के लिए कुछ अवसर देना चाहिए ।

  • 23:59:59 रविवार रात के माध्यम से शनिवार सुबह 00:00:00 बजे से काम नहीं करना चाहिए।
  • हमेशा 19:00:59 शुक्रवार शाम के माध्यम से 06:00:00 सोमवार की सुबह से काम करना चाहिए
  • काम कर सकते हैं या नहीं काम कर सकते हैं या नहीं 00:00:00 सोमवार सुबह 5:59:59 सोमवार सुबह के माध्यम से
  • या तो काम कर सकते हैं या 20:00:00 शुक्रवार शाम से 23:59:59 शुक्रवार की सुबह के माध्यम से काम नहीं कर सकते

edit2: तुरंत स्पष्ट यह निम्नलिखित 3 मानदंडों को पूरा करना चाहिए:

  • फ़ंक्शन DayOfWeekके समय की गणना करने के लिए उपयोग किए बिना (या समान) नामक फ़ंक्शन को कॉल न करें ।
  • शनिवार या रविवार या अंग्रेजी में उनके संक्षिप्त विवरण का उपयोग नहीं करना चाहिए।
  • सप्ताह के दिन को निर्धारित करने के लिए या कोड निर्धारित करते समय निर्धारित करने के लिए उपयोग नहीं किए गए समान नाम वाले चर के बिना सत या सूर्य (या उनके वैकल्पिक अक्षर मामलों में) का उपयोग नहीं करना चाहिए।

आप "सप्ताहांत" को कैसे परिभाषित कर रहे हैं? क्या यह ठीक है अगर कोड आधी रात तक इंतजार करने के बजाय शुक्रवार दोपहर को काम करना बंद कर दे?
dan04

@ dan04 मैं इसे संबोधित करने के लिए अपडेट करूंगा।

3
यदि रचनात्मक उत्तर वांछित हैं, तो यह कोड गोल्फ नहीं होना चाहिए। यदि कोड गोल्फ वांछित है, तो आपको "तुरंत स्पष्ट" उद्देश्यपूर्वक परिभाषित करने की आवश्यकता है।
जॉन ड्वोरक

स्थानीय समय, या GMT के रूप में समझा जाने वाला समय है?
जॉन ड्वोरक

@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
    ]
]

Rebol में दिनांक संख्याएँ सोमवार से रविवार तक 7 के लिए 1 की संख्या में हैं। सप्ताह के एक दिन के दिन को प्राप्त करने का अधिक साक्षर तरीका कहने के लिए है, d/weekdayलेकिन आप इसे प्राप्त भी कर सकते हैं d/7इस समस्या के अनुकूल चीजों को बदलने के बिना मेरा पसंदीदा समाधान अधिक पसंद होगा:

rJrKilNOW/weekday 6[pDT[adJk]]

लेकिन अगर समस्या की इस शैली के लिए सामान्य अनुप्रयोग के लिए शब्दावली को अद्यतन किया गया था, जो कि संभवतः यह अक्सर आता है, तो हर बार क्रिया के माध्यम से नहीं गिरना चाहते हैं, मैं संभवतः मॉन्ट्रू सन 1 - 7) बनाऊंगा और संक्षिप्त करूँगा अब WEEKDAY, जिस बिंदु पर यह संभवतः अधिक पसंद आएगा ...

rJrKilNW/wkdySAT[pDT[adJk]]

टिप्पणियाँ

हमेशा की तरह, आप "प्रोग्राम" को एक छोटा सा छोटा बना सकते हैं यदि आप रीब्यू को तर्कों के रूप में इनपुट पारित करने की अनुमति देते हैं और केवल मूल्यांकन परिणाम को स्वीकार करते हैं (यहां, या तो टाइप समय या एनओएन का कोई मूल्य) इसे प्रिंट किए बिना:

रिबमु / आर्ग्स [DnowILd / 7 6 [dt [adJk]] [J10 K20]

इसके अलावा डेल्टा-टाइम, दिनांक, छवि निर्माण, और क्रेज़ी संख्या में चीजें पहले से ही Rebol की अर्ध-मेगाबाइट, शून्य-संस्थापित निष्पादन योग्य में शामिल हैं


रेम्बु अद्भुत है। क्या रेबोल के अलावा किसी अन्य भाषा में व्याख्याकार लिखा गया है?
प्राइमो

@primo धन्यवाद! नहीं, यह रेबोल पर बहुत अधिक 100% निर्भर है, और जैसा कि मैंने उल्लेख किया है कि यह भाषा पर सिर्फ एक पतली परत है (और दिलचस्प रूप से पर्याप्त, यदि आपका कोड सभी लोअरकेस है ... उदाहरण के लिए घंटा देखें ) । Rebol यहाँ असली जादू है, और आखिरकार इसकी ओपन-सोर्सिंग के बाद से कुछ गति मिल रही है, इसलिए बेझिझक हमसे बात करें और SO चैट पर RebolBot
HostileFork का कहना है कि

मैं पूछता हूं, क्योंकि मैं वास्तव में इसे अनगोल पर उतारना देखना चाहता हूं , हालांकि मुझे यकीन नहीं है कि रेबोल में लिखे गए दुभाषिया की अनुमति देने के लिए कितना प्रयास होगा।
प्रिमो

@primo जवाब में देरी के लिए क्षमा करें ... मुझे निश्चित रूप से ऐसा होते देखने में दिलचस्पी है, इसलिए यदि आप जानते हैं कि किसी ने भी उनसे संपर्क किया है। Cloud9 IDE पर हमारे पास Rebmu है और हम RebolBot का उपयोग करने वाली वेब सेवा के माध्यम से गैर-इंटरैक्टिव Rebmu स्क्रिप्ट चलाने की क्षमता भी रखते हैं। ब्याज के रेबोल / रेड सम्मेलन में आप मेरी बात भी मान सकते हैं और शायद लोगों को समझाने में मदद करें कि यह अनगल पर होना चाहिए। :-)
HostileFork का कहना है कि SE

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 और 7 के जादू के स्थिरांक के साथ कुछ चल रहा है। दुर्भाग्य से, किसी भी तरह की रुकावट कुछ भौहें बढ़ाने वाली है।

इनपुट: व्हॉट्सएप द्वारा अलग किए गए दो पूर्णांक

आउटपुट: एक गोल्फस्क्रिप्ट सरणी शाब्दिक - दो पूर्णांकों (राशि, एमएस में समय) को एक स्थान से अलग किया गया और चौकोर कोष्ठक से घिरा।

उदाहरण:

;'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%(दो बार युग शुरू होने के बाद के दिन घट जाते हैं (यह शनिवार था, हम शनिवार चाहते हैं), मोदुलो 7 लेता है और एक बार फिर घटाता है। सप्ताहांत -1 और 0 के लिए सप्ताहांत, सप्ताह के नक्शे से 1..5 तक।
  • ,)=उस आकार के पूर्णांकों की तालिका बनाता है। यह ठीक है - एक नकारात्मक आकार का सरणी खाली है। तब यह अपना अंतिम तत्व लेता है। दुर्भाग्य से, कुछ दुभाषिए अभी तक दुर्घटनाग्रस्त नहीं हुए हैं। इसके बजाय, वे एक शून्य पॉप करते हैं - जो त्यागने के लिए सुरक्षित है। इसलिए, त्यागने के बजाय, हम इसे एक इंडेक्स के रूप में उपयोग करते हैं। Nil'th इंडेक्स को लेने से अंत में दुभाषिया क्रैश हो जाता है, लेकिन आउट-ऑफ-बाउंड्स तत्व ठीक है - कुछ भी स्टैक को धक्का नहीं मिलता है। इस मामले में, सरणी पहुंच हमेशा आउट-ऑफ-सीमा होती है, इसलिए हमारे पास त्यागने के लिए कुछ भी नहीं है।
  • ]` स्टैक पकड़ लेता है और इसे एक गोल्फस्क्रिप्ट सरणी के रूप में प्रारूपित करता है।

मुझे डर है कि आपका कोड वास्तव में ऑपरेशन का समय नहीं दे रहा है। इसके अलावा एक ऑपरेशन के साथ बदलें जो कुछ सेकंड लेता है और आप देखेंगे कि यह बिना समय लेने का दावा करता है। मैंने अपने गोल्फस्क्रिप्ट ब्लॉग में इसकी (और वर्कअराउंड) चर्चा की है ।
पीटर टेलर


मुझे लगता है कि गोल्फस्क्रिप्ट मोटापे के रूप में उत्तीर्ण होता है: पीआई यह विश्वास नहीं कर सकता कि इसमें इतने कम चरित्र हैं! क्या आप बताएंगे कि जब आप इसे शनिवार को चलाते हैं तो क्या होता है?

@LegoStormtroopr मैंने पहले ही एक उदाहरण शामिल किया है।
जॉन ड्वोरक

ओह, मेरी गलती, मैं इसे पूरी तरह से याद किया। महान प्रयास।

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
@ChristopherWirt: कूल! खुशी है कि मैंने अनफिटनेस के लिए समय सीमा समाप्त कर दी।
Ry-

यह वास्तव में एक साल पहले या तो मज़ेदार नहीं था, लेकिन मैं आपको निश्चित रूप से यह बताऊंगा कि यह "आधिकारिक" आज तक नहीं था;) जब तक कि उत्तर (किसी तरह) अस्वीकार नहीं किया जाता।
क्रिस्टोफर विर्ट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.