ঘন্টা N এর জন্য একটি নক্ষত্রের এনালগ ঘড়ি আঁকুন


22

চ্যালেঞ্জ:

এমন একটি ফাংশন বা প্রোগ্রাম তৈরি করুন যা একটি ইনপুট নেবে (0 - 24 থেকে একটি সংখ্যা) যা HOUR উপস্থাপন করে।

আউটপুটটির একটি এনালগ ঘড়ি আঁকতে হবে তারাটি N দেখায় ter

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


নোট:

• মিনিটের হাতটি অবশ্যই ঘন্টা হাতের চেয়ে লম্বা হতে হবে (ব্যবহৃত নক্ষত্রের সংখ্যা অনুসারে)

• মিনিটের হাতটি অবশ্যই কমপক্ষে 2 টি তারকাচিহ্ন হতে হবে।

• দুপুর, দুপুর 3 টা, সন্ধ্যা 6 টা, এবং 9 টা সর্বদা অরথোগোনাল থাকবে। মধ্যবর্তী ঘন্টাগুলির জন্য আপনার আউটপুট, যখন ডিগ্রি দ্বারা সাজানো হয়, দিনের বেলাগুলির মতো একই ক্রমে হওয়া উচিত। কি আমি বলতে চাচ্ছি দুপুরে হয় ঘনিয়ে 0 থেকে º এবং বিকাল 3 টায় সময় ঘনিয়ে দুপুর 1 টা আপনার আউটপুট ক্ষেত্রে জন্য তাই 90º এবং 2 টো নিম্নলিখিত সত্য হতে হবে: 0pm_deg < 1pm_deg < 2pm_deg < 3pm_deg। এই নিয়ম ব্যতীত প্রকৃত ডিগ্রির পরিমাণ আপনি যা কিছু সিদ্ধান্ত নিতে পারেন, স্পষ্টতই এটি ফন্ট এবং অন্যান্য নেটিভ কারণের উপর নির্ভর করে পরিবর্তিত হবে।

The ঘন্টা হাত এবং মিনিটের হাতের মধ্যে সংযোগকারী যৌথটি কোনও ধরণের একটি বৃত্তাকার / ডিম্বাকৃতির ইউনিকোড চরিত্র। 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
আপনি সাধারণত দিনে 25 ঘন্টা না থাকলে ঘন্টা সাধারণত 0-23 বা 1-12 থেকে 0-24 পর্যন্ত হয়
f 16nɛtɪk

1
মিনিটের হাতটি অবশ্যই ঘন্টাের হাতের চেয়ে দীর্ঘ হওয়া উচিত তবে তাদের কি আকারগুলি বজায় রাখা দরকার? উদাহরণস্বরূপ, মিনিটের হাতটি কি মিনিটের হাতের 3চেয়ে আলাদা আকারের হতে পারে 7?
অ্যাডমবর্কবার্ক

@LliwTelracs কিন্তু 23:00হয় 11:00। মনে মনে আমি আবারও 12 হাত পিছনে ফিরে লুপ করার চেষ্টা করছিলাম
অ্যালবার্ট রেনশো

6
@LliwTelracs কিছু দিন নিশ্চিতভাবে মনে হয় যেন তারা করে!

1
নেতৃস্থানীয় বা পিছনে ফাঁকা / নিউলাইন গ্রহণ করা হয়? প্যাডিং সম্পর্কে কি?
তিতাস

উত্তর:


18

জাভাস্ক্রিপ্ট (ES6), 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 টি তারকাচিহ্নে। ছোট ঘড়ি = কম বাইট :- পি
  • -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
আসলেই চালাক!
অ্যাডমবর্কবার্ক

1
ওহ বাহ আমি এই অনেক পছন্দ!
অ্যালবার্ট রেনশো

উফ। আমার পাইথন উত্তরটি আপনার আসলটির মতো দেখাচ্ছে। আপনার উত্তরটি দেখার আগে আমি সততা সহ পোস্ট করেছি। অনুমান হেক্সের সাথে আমাদেরও একই ধারণা ছিল।
এলপেড্রো

2
এবং আমি কোনওভাবে এটিকে "ঘন্টার হাত অবশ্যই কমপক্ষে 2 ..." হিসাবে পড়েছি তাই এটি সঠিকভাবে পড়তে এবং হাত ছোট করার জন্য +1
এলপেড্রো

1
@ এলপেড্রো যা আমি ভেবেছিলাম আমি এটিও মূলত পড়েছি :)
nderscore

14

সিএসএস / এইচটিএমএল (জাভাস্ক্রিপ্ট), 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>

সম্পাদনা করুন: @ বর্ধমানকে ধন্যবাদ 9 টি বাইট সংরক্ষণ করা হয়েছে


খুব সুন্দর ধারণা!
nderscore

সত্যিই দুর্দান্ত উত্তর।
এলপেড্রো

আপনি নিজের ইনপুট ট্যাগটি দিয়ে এটিকে <body onload=f(prompt())>
অ্যালবার্ট রেনশো

1
আপনি সরাসরি ইনপুট বৈশিষ্ট্যে ফাংশন কোড এম্বেড করতে পারেন:<input oninput=h.style.transform=`rotate(${this.value*30}deg)`>
nderscore


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-এর নক্ষত্রটি সূচকগুলির তালিকার Mod-12 সূচকের অনুমতি দিতে যাবে, শেষ অক্ষরটি পপিংয়ের চেয়ে বাইট-সস্তার চেয়ে কম এর উপসংহার করছেন “**o” আগে করা এবং as তারকাচিহ্নগুলির মধ্যে একটিতে ওভাররাইট করা।

ঘূর্ণন সম্পর্কিত - এটি মাঝখানে `" ** ও "দিয়ে স্ট্রিং তৈরির তুলনায় এটি একটি বাইট সেভ (এটির সাথে পূর্বে বা নক্ষত্র স্থাপনের পরে)।


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))

ফাংশন সি হ'ল প্রদত্ত কাজটি সমাধান করে


2

বাশ + ইউনিক্স ইউটিলিটিস, 57 বাইট

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

(চূড়ান্ত ব্যাকস্ল্যাশ পরে একটি জায়গা আছে।)

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

খুব সুন্দর ঘড়ি নয়, তবে এটি সমস্ত প্রয়োজনীয়তা পূরণ করে।


2

পিএইচপি, 71 বাইট

1 টি তারকাচিহ্ন ঘন্টা হাত, 2 টি তারকাচিহ্ন মিনিট হাত।

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

কমান্ড লাইন আর্গুমেন্ট থেকে ইনপুট নেয়; দিয়ে চালানো -nr

  1. টেমপ্লেট সংজ্ঞায়িত করুন
  2. অবস্থানের মানচিত্র ঘন্টা (চিঠি থেকে ডিকোড) এবং অক্ষরেখায় অবস্থানে অক্ষর সেট করুন
  3. ছাপা

1

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

এটি টিআইওর পক্ষে খুব ধীর।

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

টিআইওতে অনুরূপ কোডের জন্য কাজ করার চেষ্টা করুন

খুব নিশ্চিত যে এটি এখনও গল্ফড এবং গতিময় হতে পারে।
ব্যাখ্যা পরে আসছে।


1

লজিকোড 634 বাইট

কীভাবে ইনপুট করবেন তা নির্ধারণ করতে পারেনি তাই টিও লিঙ্কের শীর্ষে ইনপুটটির জন্য একটি 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)

এই গল্ফ উপর ছেড়ে দিয়েছেন। যদিও এটিকে ঘড়িটিকে ভয়ঙ্কর দেখানোর জন্য ব্যয় করে এটি আরও ছোট করা যায়।

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

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