घंटे एन के लिए तारांकन चिह्न अनुरूप घड़ी बनाएं


22

चुनौती:

एक फ़ंक्शन या प्रोग्राम बनाएं जो इनपुट N (0 - 24 से एक नंबर) लेगा जो HOUR का प्रतिनिधित्व करता है।

आउटपुट को एन घड़ी दिखाने वाले तारांकन से एक एनालॉग घड़ी खींचनी चाहिए।

🕛🕐🕑🕒🕓🕔🕕🕖🕗🕘🕙🕚🕛🕐🕑🕒🕓🕔🕕🕖🕗🕘🕙🕚🕛


टिप्पणियाँ:

• मिनट का हाथ घंटे के हाथ से अधिक होना चाहिए (उपयोग किए गए तारांकन की संख्या के संदर्भ में)

• मिनट का हाथ कम से कम 2 तारांकन होना चाहिए।

• दोपहर, 3pm, 6pm, और 9pm हमेशा ऑर्थोगोनल रहेगा। मध्यस्थों द्वारा आपका आउटपुट, जब डिग्री द्वारा व्यवस्थित किया जाता है, तो दिन के घंटों के समान क्रम में होना चाहिए। क्या मेरा मतलब है दोपहर में है घंटे की सुई 0 º है और 3pm पर घंटे की सुई 1:00 के अपने उत्पादन के मामलों के लिए तो 90 डिग्री है और दोपहर 2 बजे निम्नलिखित सच होना चाहिए: 0pm_deg < 1pm_deg < 2pm_deg < 3pm_deg। इस नियम के अलावा वास्तविक डिग्री राशि आप जो भी तय कर सकते हैं, जाहिर है यह फ़ॉन्ट और अन्य मूल कारकों के आधार पर बदल जाएगा।

• घंटे और हाथ के बीच का संयुक्त जोड़ किसी भी तरह का एक गोलाकार / अंडाकार यूनिकोड वर्ण है। o, O, •, 0, etc.


उदाहरण इनपुट / आउटपुट (ड्राइंग शैलियों के आधार पर भिन्न हो सकते हैं)

 N = 3;

 *
 *
 *
 O  *  *

 N = 4;

 *
 *
 *
 O
    *
       *

 N = 5;

 *
 *
 *
 0
  *
   *

 N = 6;

 *
 *
 o
 *

 N = 7;

      *
      *
      *
      •
    *
  *

 N = 0,12,24;

 *
 *
 *
 o

विभेदित आउटपुट का उदाहरण:

 N = 4     VS     N = 5     VS     N = 6

  *                *                *
  *                *                *
  O                O                O
      *              *              *

यह , इसलिए सबसे छोटा बायटेकाउंट जीत के साथ कार्यक्रम!


8
घंटे आमतौर पर 0-23 या 1-12 नहीं 0-24 से होते हैं जब तक कि आपके पास एक दिन में 25 घंटे न हों
f atnɛtɪk

1
मिनट हाथ घंटे के हाथ से अधिक होना चाहिए, लेकिन क्या उन्हें अपने आकार को बनाए रखने की आवश्यकता है? उदाहरण के लिए, मिनट का हाथ मिनट के हाथ 3से भिन्न आकार का हो सकता है 7?
AdmBorkBork

@LliwTelracs लेकिन 23:00है 11:00। मेरे दिमाग में मैं फिर से 12 हाथ करने की कोशिश कर रहा था
अल्बर्ट रेनशॉ

6
@LliwTelracs कुछ दिन यकीन है कि वे ऐसा महसूस करते हैं!

1
क्या प्रमुख या अनुगामी रिक्त स्थान / नए समाचार स्वीकार किए जाते हैं? पैडिंग के बारे में क्या?
टाइटस

जवाबों:


18

जावास्क्रिप्ट (ईएस 6), 105 76 65 बाइट्स

F=N=>`  *
ab*12
 9@3
87654`.replace(/\w/g,y=>'0x'+y^N%12?' ':'*')
<!-- Snippet Demo: -->
N =  <input type="number" min="0" max="24" value="2" id="I" />
<button onclick="console.log(F(I.value))">Run</button>

  • -29 बाइट्स:

    • क्रमशः 2 और 1 तारांकन के लिए मिनट और घंटे के हाथ के आकार में कमी। छोटी घड़ी = कम बाइट्स :-P
  • -11 बाइट्स:

    • संख्यात्मक तुलना के लिए बदल स्ट्रिंग।
    • y==(N%12).toString(16)?'*':' ' -> '0x'+y^N%12?' ':'*'

लंबे हाथों के साथ मूल: ( 105 94 बाइट्स)

F=N=>`    *
a b * 1 2
  ab*12
  99@33
  87654
8 7 6 5 4`.replace(/\w/g,y=>'0x'+y^N%12?' ':'*')
<!-- Snippet Demo: -->
N =  <input type="number" min="0" max="24" value="2" id="I" />
<button onclick="console.log(F(I.value))">Run</button>


1
यह वास्तव में चालाक है!
AdmBorkBork

1
अरे वाह मुझे यह बहुत पसंद है!
अल्बर्ट रेनशॉ

उफ़। मेरा पायथन का उत्तर आपके मूल जैसा है। मैंने आपका जवाब देखने से पहले, ईमानदारी से पोस्ट किया। लगता है कि हम हेक्स के साथ एक ही विचार था।
एलपेड्रो

2
और मैं किसी भी तरह इसे "घंटे का हाथ कम से कम 2 ..." होना चाहिए, इसलिए इसे ठीक से पढ़ने और हाथों को छोटा करने के लिए +1।
एलपीड्रो

1
@ElPedro यही मैंने सोचा था कि मैं मूल रूप से भी पढ़ता हूं :)
nderscore

14

CSS / HTML (जावास्क्रिप्ट), 62 + 106 = 180 168 बाइट्स

pre{position:absolute;left:99px;bottom:99px;transform-origin:50% 80%}
<input oninput=h.style.transform=`rotate(${this.value*30}deg)`><pre>*
*
o</pre><pre id=h>*

</pre>

संपादित करें: @nderscore के लिए 9 बाइट्स सहेजे गए।


बहुत अच्छा विचार है!
nderscore

वास्तव में अच्छा जवाब।
एलपीड्रो

आप अपने इनपुट टैग को इस के साथ स्वैप करके 4 बाइट्स शेव कर सकते हैं<body onload=f(prompt())>
अल्बर्ट रेनशॉ

1
आप सीधे oninput विशेषता में फ़ंक्शन कोड को भी एम्बेड कर सकते हैं:<input oninput=h.style.transform=`rotate(${this.value*30}deg)`>
23

9

पायथन 2 , 148 140 135 बाइट्स

-8 कुछ बचे हुए स्थानों और एक अनावश्यक नई लाइन को हटाकर।

-5 बदलकर (' ','*')करने के लिए' *'

a=input()
b='''    *
a b * 1 2
  ab*12
9 9 o 3 3
  87654
8 7 6 5 4'''
for x in range(1,12):b=b.replace(hex(x)[2],' *'[x==a%12])
print b

इसे ऑनलाइन आज़माएं!


5

सी (जीसीसी) , 144 बाइट्स

#define v ,t
h;t(i){putchar(i>12?i-9:h^i?32:42);}n(i){h=i%12;puts("  *")v(10)v(11)v(h)v(1)v(2)v(19)v(12)v(9)v(57)v(3)v(19)v(8)v(7)v(6)v(5)v(4);}

इसे ऑनलाइन आज़माएं!


+1; पवित्र पुनरावृत्ति! मुझे यह प्रफुल्लित करने वाला लगता है कि आप एक कोडा-गोल्फ चैलेंज में बाइट्स को अल्पविराम लगाकर बचा सकते हैं
अल्बर्ट

मैं इसकी उम्मीद नहीं कर रहा था, हालांकि दृष्टि में कोई पुनरावृत्ति नहीं है। यह एक कठिन कोडित उत्तर है, हालांकि थोड़ा मोटे तौर पर।
अहमोन

मुझे नहीं लगता कि अल्पविराम से पहले आपको जगह की आवश्यकता है
छत

4

स्माइलबासिक, 90 88 74 बाइट्स

INPUT H?("  *"+" "*47)*2;"  o
R=H/1.9LOCATE 2.5+SIN(R)*2,3.5-COS(R)*2?"*

उदाहरण आउटपुट:

? 5
  *
  *
  o

   *

? 3
  *
  *
  o *


3

जेली , 35 34 33 बाइट्स

ị“ tI©’Œ?Ḋ¤µ⁶ẋ13”*⁸¦Ṗ;“**o”ṙ7s5ZY

इसे ऑनलाइन आज़माएं! (tI©!) या सभी देखें (0 - 24)

कैसे?

ị“ tI©’Œ?Ḋ¤µ⁶ẋ13”*⁸¦Ṗ;“**o”ṙ7s5ZY - Main link: h
          ¤                       - nilad followed by link(s) as a nilad:
 “ tI©’                           -     base 250 number: 522956007
       Œ?                         - shortest permutation of [1,N] that would be at
                                     that index in a lexicographically sorted
                                     list: [2,3,4,5,6,7,1,12,11,10,9,8,13]
         Ḋ                        - dequeue: [3,4,5,6,7,1,12,11,10,9,8,13]
ị                                 - index into (1-based and modular, so h=2 picks 4,
                                     as does h=14 [as do h=26, h=-10, etc.])
           µ                      - monadic chain separation (call the result j)
            ⁶                     - space character
             ẋ13                  - repeat 13 times
                   ¦              - apply to index...
                  ⁸               - ...left argument (j)
                ”*                -     an asterisk character (replacemes the space
                                         at index j with an asterisk)
                    Ṗ             - pop the last character off the list †
                     ;“**o”       - concatenate "**o"
                           ṙ7     - rotate left by 7 ‡
                             s5   - split into chunks of length 5 (columns)
                               Z  - transpose (get the rows of the clock)
                                Y - join with line feeds
                                  - implicit print

ध्यान दें कि “ tI©’Œ?Ḋ(अनुक्रमणिका में क्रमोन्नति, विघटित) एक बाइट सेव ओवर “9ȧỤ_ÑḶ’b⁴(बेस 16) है, जो बाइट सेव ओवर “¦þxṙ<ȥ’ḃ13(बायजेक्टिव बेस 13) है।

पॉप के बारे में - हमारे पास स्ट्रिंग में एक अतिरिक्त जगह है, जो कि 0, 12, 24 के लिए तारांकन सूची की मॉड -12 अनुक्रमणिका की अनुमति देने के लिए जाएगी, अंतिम वर्ण को पॉप-बाइट करने की तुलना में बाइट से सस्ता है। “**o”पहले से कर रहे हैं और उन तारांकन में से एक को अधिलेखित करना।

रोटेशन के बारे में - यह बीच में `'** ओ' 'के साथ एक तार बनाने पर एक बाइट सेव है (या तो तारांकन प्लेसमेंट से पहले या बाद में इसके साथ)।


3

हास्केल, 148 बाइट्स

c n=mapM_ putStrLn$(t(n-3)!(t n!(\_->'*')))(map(\x->(2!(\_->x))"     ")"**O  ")
n!f=(\(x,a:y)->x++f a:y).splitAt n
t n=2+truncate(2.5*sin(n*pi/6))

फंक्शन c वह है जो दिए गए कार्य को हल करता है


2

बैश + यूनिक्स उपयोगिताओं, 57 बाइट्स

tr `dc -e12o$1O%p` \*<<<'B*1
A*2
9O3
864
7 5'|tr 1-9AB \ 

(अंतिम बैकस्लैश के बाद एक स्थान है।)

इसे ऑनलाइन आज़माएं!

बहुत सुंदर घड़ी नहीं, लेकिन यह सभी आवश्यकताओं को पूरा करती है।


2

PHP, 71 बाइट्स

1 तारांकन घंटे हाथ, 2 तारांकन मिनट हाथ।

$s="  *
  *  
  O  
";$s[ord(BGHNTSRQPJDE[$argv[1]%12])&31]="*";echo$s;

कमांड लाइन तर्क से इनपुट लेता है; साथ चलाना -nr

  1. टेम्पलेट को परिभाषित करें
  2. स्थिति के लिए नक्शा घंटे (पत्र से डिकोड) और तारांकन स्थिति पर चरित्र सेट करें
  3. प्रिंट

1

05AB1E , 41 बाइट्स

यह TIO के लिए बहुत धीमा है।

14Ýœ•2!&ô÷‰•èv… *@y_2L11+¹12%0‚ìyå+èJ}3ô»

TIO पर काम करने वाले समान कोड के लिए यह प्रयास करें

बहुत यकीन है कि यह अभी भी गोल्फ और स्पेड दोनों हो सकता है।
स्पष्टीकरण बाद में आ रहा है।


1

लॉजिकोड 634 बाइट्स

यह पता लगाने की कोशिश नहीं की जा सकती है कि tio लिंक के शीर्ष पर इनपुट के लिए var a = ... है

circ v(a)->cond((a&1000)+0)&a->0/a
circ n(a)->cond a&10000->((a&100)+0)|!(a&100)&((a&011)|100)/a
circ y(a)->cond((a&100)+0)&a->a&10011/a
var s=@100000
var m=@101010
var x=y(n(v(a)))
var e=x&1000
var f=(x&100)+0
var t=(x&10)+00
var o=(x&1)+000
circ r(a,b)->cond(a)->b/@a
out s+s+s+s+m
out r(e&t&!o,m)+s+r(o&e&t,m)+s+m+s+r(o&!e&!f&!t,m)+s+r(t&!o&!f&!e,m)
out s+s+r(e&t&!o,m)+r(e&t&o,m)+m+r(o&!t&!f&!e,m)+r(t&!o&!f&!e,m)
out r(e&o&!t,m)+s+r(e&o&!t,m)+s+@110000+s+r(t&o&!f&!e,m)+s+r(t&o&!f&!e,m)
out s+s+r(e&!t&!o,m)+r((f&t&o),m)+r(f&t&!o,m)+r(f&!t&o,m)+r(f&!t&!o,m)
out r(e&!t&!o,m)+s+r(f&t&o,m)+s+r(f&t&!o,m)+s+r(f&o&!t,m)+s+r(f&!t&!o,m)

इस गोल्फिंग पर छोड़ दिया है। हालांकि घड़ी को भयानक बनाने की कीमत पर इसे कम किया जा सकता है।

इसे ऑनलाइन आज़माएं

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.