একটি সংখ্যাযুক্ত কিউবে একটি মুখ আউটপুট করুন


19

আপনি যেভাবে চান তা 0 থেকে 7 এর মধ্যে 8 ঘনক্ষেত্রের 8 টি শীর্ষকে নির্ধারণ করুন। ঠিক প্রতিটি সংখ্যার জন্য একটি সংখ্যা নির্ধারিত হতে হবে।

উদাহরণস্বরূপ, আপনার শিখরগুলি এইভাবে নির্ধারিত হতে পারে:

  3-----1
 /|    /|
4-----2 |
| |   | |
| 5---|-0
|/    |/
6-----7

0 থেকে 5 এর মধ্যে পূর্ণসংখ্যার জন্য একটি প্রোগ্রাম লিখুন এই 6 টি সংখ্যার প্রতিটি আপনার পছন্দ মতো কোনওভাবে আপনার ঘনকের এক মুখের সাথে যুক্ত। যখন এই সংখ্যার কোনও একটি ইনপুট হয়, তখন যুক্ত মুখের 4 টি ভার্টেক্স সংখ্যাগুলি 2 × 2 বর্গের অঙ্কের স্টাডাউটে মুদ্রণ করতে হবে। কিউবের বাইরে থেকে মুখটি সরাসরি দেখতে হবে। সমস্ত 4 টি মুখ ঘোরানো বৈধ।

উদাহরণস্বরূপ, যদি 0 উদাহরণস্বরূপ ঘনক্ষেত্রের সামনের মুখের সাথে সম্পর্কিত হয় তবে এটি ইনপুটটির জন্য একটি বৈধ আউটপুট হবে 0:

42
67

মুখটি যে কোনও 90 ° রোটেশনে দেখা যায়, তাই এগুলিও বৈধ:

27
46
76
24
64
72

এই আউটপুট (এবং এর ঘূর্ণন) বৈধ নয় , কারণ তারা মুখের ভুল দিক থেকে দেখা হয়:

24
76

একই ধারণা অন্যান্য সমস্ত মুখের ক্ষেত্রে প্রযোজ্য। যেমন 1 যদি পিছনের মুখের সাথে সম্পর্কিত হয় তবে ইনপুট 1আউটপুট তৈরি করতে পারে 13[newline]05(এবং 31[newline]50অবৈধ হবে)।

সুতরাং আসল চ্যালেঞ্জটি হ'ল আপনার ভার্টেক্স সংখ্যা এবং ঘূর্ণনগুলি বেছে নেওয়া যা ইনপুটটিকে 4 টি ভার্টেক্স সংখ্যায় অনুবাদ করা সহজ এবং সংক্ষিপ্ত।

বাইটের মধ্যে সংক্ষিপ্ততম কোডটি জয়ী। টাইব্রেকার আগের পোস্ট। ( হ্যান্ড বাইট কাউন্টার। )

মন্তব্য

  • আপনি কোনও প্রোগ্রামের পরিবর্তে কোনও ফাংশন লিখতে পারেন। এটি 0 থেকে 5 অবধি পূর্ণসংখ্যার নিতে হবে এবং 2 × 2 ডিজিটের গ্রিড স্ট্রিংটি মুদ্রণ বা ফিরে আসা উচিত।
  • স্টিডিন, কমান্ড লাইন বা ফাংশন আরগ থেকে ইনপুট নিন। আপনি ইনপুটটি বৈধ বলে ধরে নিতে পারেন।
  • আউটপুটে optionচ্ছিকভাবে একটি পিছনের নিউলাইন থাকতে পারে।
  • আপনার চয়ন করা শীর্ষবিন্দু এবং মুখের সংখ্যাগুলি অবশ্যই আমাদের জানান।

উত্তর:


17

সিজেম, 23 16 বাইট

এই সমস্যাটির সম্ভবত একটি মার্জিত গাণিতিক সমাধান রয়েছে। তবে কীভাবে এটির সন্ধান করতে হবে তার আমার কোনও ধারণা নেই, সুতরাং এটির পক্ষে সুপার কোড্রেড হার্ড কোডিং!

আমি একটা পেয়েছি! ঠিক আছে, এটি কোনও ধ্রুপদী মার্জিত গাণিতিক সমাধান নয় কারণ এটি বিটওয়াইজ অপারেশনগুলি ব্যবহার করে, তবে এটি সম্পূর্ণ সূত্রযুক্ত।

li_o1^_p_6|o3+6%

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

কিউব বিন্যাস

  4-----7          4-----7          3-----2
 /|    /|         /  0  /|         /  3  /|
1-----0 |        1-----0 |        6-----5 |
| |   | |        |     |2|        |     |4|
| 5---|-2        |  1  | 2        |  5  | 7
|/    |/         |     |/         |     |/ 
6-----3          6-----3          1-----4  

ব্যাখ্যা

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

  • উপরে বাঁদিকে: n
  • উপরের ডানে: n^1
  • নিচে বামে: (n^1)|6
  • নিচের ডানে: ((n^1)+3)%6

রেফারেন্সের জন্য, আমি এখানে প্রতিটি পছন্দসই লেআউটে আউটপুট পুনরুত্পাদন করব:

Face:      0     1     2     3     4     5

Vertices:  01    10    23    32    45    54
           74    63    70    65    72    61

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


উত্তরসূরির জন্য, এবং যেহেতু আমি মনে করি এটি এখনও বেশ ভাল পদ্ধতির ছিল তাই এখানে আমার পুরানো উত্তর's

সিজেম, 23 বাইট

এই সমস্যাটির সম্ভবত একটি মার্জিত গাণিতিক সমাধান রয়েছে। তবে কীভাবে এটির সন্ধান করতে হবে তার আমার কোনও ধারণা নেই, সুতরাং এটির পক্ষে সুপার কোড্রেড হার্ড কোডিং!

"pÜ×ñè¨"487b8b3/ri_o=~p

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

কিউব বিন্যাস

  0-----7          0-----7          3-----6
 /|    /|         /  0  /|         /  3  /|
1-----2 |        1-----2 |        4-----5 |
| |   | |        |     |2|        |     |5|
| 5---|-6        |  1  | 6        |  4  | 7
|/    |/         |     |/         |     |/ 
4-----3          4-----3          1-----0  

ব্যাখ্যা

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

"নিষ্পাপ" সমাধানটিতে আমি তিনটি কী অপ্টিমাইজেশন তৈরি করেছি:

  • কিউবটি এমনভাবে ছড়িয়ে দিন যাতে প্রতিটি মুখকে তার মুখ সংখ্যাটি প্রথম শীর্ষবিন্দু হিসাবে বর্ণনা করা যায়। উপরে উপস্থাপিত হিসাবে আমার কিউব লেআউটটির দিকে তাকিয়ে, কেউ দেখতে পাবে যে প্রতিটি মুখের উপরের-বাম শীর্ষটি সংখ্যাটি সংখ্যা সংখ্যার সমান। এটি আমাকে ইনপুটটি প্রিন্ট করতে হবে এমন ব্যয় করে ছয়টি কম শিখুনকে এনকোড করতে দেয়, যা বাইট সংরক্ষণ করতে দেখা যায়।
  • ভার্টেক্স তথ্যটি একটি স্ট্রিংয়ে প্যাক করুন যার জন্য প্রতিটি "অক্ষর" সর্বাধিক 256 এর চেয়ে বড় থাকে this এই সর্বাধিক 256 পেরিয়ে যাওয়ার সাথে সাথে স্ট্রিংটির দৈর্ঘ্য আস্তে আস্তে হ্রাস পায়, তবে এটি সম্ভবত ক্রমবর্ধমান হয়ে উঠতে পারে যে কোনও একটি "অক্ষর" 256 ছাড়িয়ে গেছে এবং সুতরাং আর 1-বাইট ASCII অক্ষর সেট এর অংশ নেই। সুতরাং আমি একটি প্রোগ্রাম লিখেছিলাম যে 256 থেকে 1000 পর্যন্ত প্রতিটি বেসে ভার্টেক্স তথ্য এনকোডিংয়ের চেষ্টা করেছি, যার সাহায্যে আমি প্রায় 10 টি বেস পেয়েছি যা 256 বেসের তুলনায় অক্ষরের ডেটার একটি বাইট সংরক্ষণ করে 48 আমি 487 বেছে নিয়েছি, কারণ এতেও চমৎকার সম্পত্তি রয়েছে যে ফলস্বরূপ স্ট্রিং পুরোপুরি মুদ্রণযোগ্য ASCII নিয়ে গঠিত।
  • প্রথম অপ্টিমাইজেশনের সাথে মিশ্রিত হয়ে আউটপুটটি asymetrically উত্পাদন করুন। সিজেমের স্বাভাবিক পদ্ধতির মধ্যে হ'ল ভারটেক্স ডেটাগুলিকে 2-উপাদানগুলির তালিকার 2-উপাদান তালিকা হিসাবে ফর্ম্যাট করা, মাঝখানে একটি নতুন লাইন sertোকানো এবং আউটপুট সুস্পষ্টভাবে মুদ্রণ করা উচিত। তবে আমি পরিবর্তে প্রথম ভার্টেক্স মুদ্রণ করব (ইনপুট ফেস সংখ্যার সমান) কোনও অপারেটর দিয়ে যা কোনও নতুন লাইন যোগ করে না, অন্যান্য শীর্ষাংশের 3-উপাদান তালিকাটি পুনরুদ্ধার করে, পরবর্তী শীর্ষটি ধরুন এবং এটি যুক্ত করে এমন একটি অপারেটরের সাথে মুদ্রণ করুন একটি নতুন লাইন, এবং অন্য দুটি উল্লম্ব সুস্পষ্টভাবে মুদ্রণ করা যাক। এটি একটি বাইট সংরক্ষণ করে।

2
আমি একটি মার্জিত গাণিতিক পদ্ধতির হিসাবে অনুমোদনের চেষ্টা করেছি এবং এটি আপনার আশাবাদ ছাড়াই হার্ড-কোডিংয়ের চেয়ে বেশি ভার্জোজ।
পিটার টেলর

আপনার সর্বশেষ উত্তর উজ্জ্বল। আমি মনে করি আপনার এটি পৃথক উত্তর হিসাবে পোস্ট করা উচিত ছিল কারণ এটি সম্পূর্ণ ভিন্ন পদ্ধতির এবং অন্য উত্সাহের যোগ্য। মূলত আপনি আমার সি উত্তর হিসাবে একই ঘনক্ষেত্র আছে কিন্তু প্রথম তিনটি এমনকি কোণে এক জায়গায় স্থানান্তরিত। আমি মিস 6+n%2 --> 6|nকরেছি বিশ্বাস করতে পারি না (আমি এটি আমার রুবির উত্তরে ইতিমধ্যে অন্তর্ভুক্ত করেছি)) নোট করুন যে n --> n^1মুখগুলিতে রূপান্তরটি সম্পাদন করার মাধ্যমে আপনি আপনার সূত্রগুলি সহজতর করতে পারবেন, যদিও আমি অনুমান করছি যে আপনি বাতিল nএবং n^1এটির সাথে চালিয়ে যাওয়ায় এটি জিতেছে আপনার স্কোর সাহায্য করবে না।
স্তরের নদী সেন্ট

প্রশংসা করার জন্য ধন্যবাদ আমি আড্ডায় জিজ্ঞাসা করেছি আমাকে সম্পূর্ণ নতুন উত্তর হিসাবে এটি পোস্ট করা উচিত, তবে thereক্যমত্য হয়নি তাই আমি করিনি। আমি স্পষ্টতই নিজের সাথে সন্তুষ্ট হয়েছিলাম যখন বুঝতে পারি যে কিউবের চারপাশে জোড়গুলি nএবং জোড়গুলি সাবধানে অর্ডার করা n^1আমাকে ন্যায়বিচারের সাথে অন্য একটি ভার্টেক্স গণনা করার অনুমতি দেবে |6। এবং আমি সেই n --> n^1রূপান্তরটি দেখিনি , যা অবশ্যই তাৎপর্যপূর্ণ। তবে আপনি সঠিকভাবে অনুমান করেছেন যে এটি আসলে আমার স্কোরকে প্রভাবিত করবে না, তাই আমি সম্ভবত এটি ঠিক তেমন রেখে দেব।
রানার 1112

আমি এগিয়ে গিয়েছিলাম এবং আমার রুবির উত্তরে আপনার এক্সওআর ধারণাটি সংযুক্ত করেছি। এটি 10 ​​এর একটি সঞ্চয় দেয় (2 এর জন্য 2 ছাড়াও 6+n%2 --> 6|n) আশা করি আপনার আপত্তি নেই। আমি n --> n^1মুখের উপর রূপান্তরটি ব্যবহার করেছি , তাই আমার সর্বশেষ সংশোধনটি আপনার মতো একই ফলাফল দেয় তবে বিভিন্ন ইনপুট রয়েছে। বিটিডাব্লু, আমি মনে করি না যে বিট অপারেশনগুলি অদলবদল, এটি কীভাবে আপনি তাদের ব্যবহার করেন তা নির্ভর করে!
স্তর নদী সেন্ট

1
গল্ফস্ক্রিপ্টে 1 টি খাটো খাটো:~.1^..n@6|@3+6%
পিটার টেলর

14

সি, 69

f(c){int d=c++%2*2-1;printf("%d%d\n%d%d",(c-d)%6,c%6,c%2+6,(c+d)%6);}

পরীক্ষা প্রোগ্রামে অসম্পূর্ণ

f(c){
 int d=c++%2*2-1;
 printf("%d%d\n%d%d",(c-d)%6,c%6,c%2+6,(c+d)%6);
}

int n;
main(){
  scanf("%d",&n);
  f(n);
}

ব্যাখ্যা

আমার ঘনক্ষেত্রের নম্বরটি যখন প্রকাশিত হবে তখন এটিকে দেখতে:

0---7
|   |
| 0 |
|   |
1---2---7 
|   |   |
| 1 | 2 |
|   |   |
6---3---4---7
    |   |   |
    | 3 | 4 |
    |   |   |
    6---5---0
        |   |
        | 5 |
        |   |
        6---1

উপরের বাম কোণে মুখের মতো একই সংখ্যা রয়েছে।

নীচের ডান কোণে নম্বর রয়েছে (n+2)%6

বিজোড় nজন্য উপরের ডান কোণ (n+1)%6এবং নীচে বাম হয়6

এমনকি nউপরের ডান কোণটি 7এবং নীচে বাম হয় left(n+1)%6

প্রোগ্রামটি প্রদর্শিত হিসাবে বিজোড় সংখ্যাগুলি প্রদর্শন করে এবং সমান সংখ্যা 180 ডিগ্রি ঘোরানো। এর অর্থ হ'ল উপরের ডানদিকে সর্বদা (n+1)%6এবং নীচে বামটি সর্বদা থাকে (n+1)%2+6। উল্টানো nএবং n+2সহজ (এটি সেট বা সংযোজন বা বিয়োগ বা প্রয়োজনীয় হিসাবে c=n+1ব্যবহার করে করা dহয় ))1-1

আউটপুট

$ ./a
0
21
70

$ ./a
1
12
63

$ ./a
2
43
72

$ ./a
3
34
65

$ ./a
4
05
74

$ ./a
5
50
61

5
+1 এটি আমি যেমন কল্পনা করছিলাম সেই রকম মার্জিত গাণিতিক সমাধান। দুর্ভাগ্যক্রমে, এটি সি তে প্রয়োগ করা হয়েছে ...
রানার 1112

1
@ রানার 1112 ধন্যবাদ দুর্ভাগ্যক্রমে, সি হ'ল আমি ভাল ভাষা জানি। আমি রুবি শিখছি তবে আমি এখনও শিক্ষানবিশ। রুবি এই স্কোরটি ছিন্ন করতে সক্ষম হবে তবে সম্ভবত সিজমের সাথে প্রতিযোগিতা করবে না। হয়তো আমি পরে রুবি পোস্ট হবে, অথবা শুধু আমার সি উত্তর কিছু ছোটখাট উন্নতি এটি (পরিবর্তন করে উদাহরণস্বরূপ c%6করার c%=6এবং মুখ আবর্তিত তাই এটি প্রথম আসে, এটা কিছু মডুলাস গণনার নিষ্কাশন করা সম্ভব হওয়া উচিত।) হল নিয়ে পরীক্ষা করতে আরেকটা জিনিস একসাথে মুখের লেবেল স্থানান্তর করা, যাতে আমি এর n-1,n,n+1পরিবর্তে পেতে পারি n,n+1,n+2
স্তর নদী সেন্ট

@ স্টেভেরিলিল আপনি ইতিমধ্যে nবিশ্বব্যাপী ঘোষনা করছেন , তাই আপনি আরও কিছু বাইট উচ্চতর ঘোষণা করে সংরক্ষণ করতে পারবেন, স্বাক্ষরে পরিবর্তন করবেন f()? বা আমরা এখানে শুধুমাত্র fফাংশন তাকান?
dwcanillas

@dwcanillas "You may write a function instead of a program"তাই আমি কেবল ফাংশনটি গণনা করছি। যাই হোক না কেন, এটি আমি যে ভাষায় সবচেয়ে বেশি পরিচিত তার ধারণার প্রমাণ ছিল। আমি আমার রুবি উত্তরটি সংক্ষিপ্ত করতে আরও আগ্রহী, যা শুরু থেকেই এর চেয়ে অনেক কম ছিল।
লেভেল রিভার সেন্ট

8

উপাদান, 18

_4:2%6+``2+6%`-5+`

আরও অনেক উন্নত গল্ফিং ভাষার মতো নয়, এলিমেন্টের কোনও সংকোচন অপারেটর নেই, সুতরাং সমাধানের ব্রেভিটি ব্যবহৃত সঠিক সংখ্যা স্কিমের সাথে বরং ঘনিষ্ঠভাবে আবদ্ধ। কিছু পরীক্ষা-নিরীক্ষার পরে, আমি একটি নতুন সংখ্যা স্কিম তৈরি করেছি যা কেবলমাত্র সাধারণ গাণিতিক ক্রিয়াকলাপগুলি ব্যবহার করে শিখরগুলি গণনা করতে দেয়।

  1-----0          1-----0          2-----5
 /|    /|         /  4  /|         /  3  /|
4-----6 |        4-----6 |        3-----7 |
| |   | |        |     |0|        |     |5|
| 7---|-5        |  2  | 5        |  1  | 0
|/    |/         |     |/         |     |/ 
3-----2          3-----2          4-----1  

উপরের বাম কোণটি 6 টি এমনকি এবং বিজোড় হলে 7 হয়। উপরের-ডান কোণটি নিজেই ফেস নম্বর। নীচে-বামটি হ'ল মুখ সংখ্যা, প্লাস 2, মড 6 The নীচের ডানদিকে 5 নম্বর বিয়োগ।

কোডটির ব্যাখ্যা এখানে দেওয়া হল।

_4:2%6+``2+6%`-5+`
_4:                    take input and make several copies of it
   2%6+`               take face #, mod 2, add 6, and output
        `              output input, which already has the newline attached
         2+6%`         take face #, add 2, mod 6, and output
              -5+`     negate face #, add 5, and output

এখানে প্রতিটি মুখের আউটপুট রয়েছে:

0
60
25

1
71
34

2
62
43

3
73
52

4
64
01

5
75
10

+1: যদিও আমি আপনার কোডটিকে অনিবার্য বলে মনে করি, এটি গল্ফের ভাষায় এই স্কোরগুলি কী করে তা দেখতে ভালই লাগল। দেখে মনে হচ্ছে আপনি বর্তমানে 2 সিজেএম উত্তরগুলির পিছনে যৌথ তৃতীয় স্থানে রয়েছেন: পিটার টেলর এবং রানার 112
লেভেল রিভার সেন্ট

এখন এটি একটি শক্তিশালী দ্বিতীয় স্থানে রয়েছে, তবে আমি সিজেমকে মারধর করার বিষয়টি আগে থেকেই ভাবছি না।
PhiNotPi

6

অক্টাভা, 108 100 68 50 বাইট

অবশ্যই এটি আমার পূর্ববর্তী পদ্ধতির চেয়ে প্লেইন হার্ডকোডিংয়ের চেয়ে আরও মার্জিত উপায়ে করার একটি উপায়। আমি আশ্চর্য হয়েছি যে কীভাবে অক্টোলাভ ম্যাটলব =) এর চেয়ে কোডগল্ফের জন্য আরও উপযুক্ত)

f=@(n)['040201375767';'261345154623'](:,2*n+(1:2))

লেআউট:

(দুঃখিত, আমি এটি যুক্ত করতে ভুলে গেছি।)

কিউব বিন্যাস

  1-----5          1-----5          6-----7
 /|    /|         /  2  /|         /  5  /|
0-----4 |        0-----4 |        2-----3 |
| |   | |        |     |4|        |     |3|
| 3---|-7        |  0  | 7        |  1  | 5
|/    |/         |     |/         |     |/ 
2-----6          2-----6          0-----1  

পুরানো সংস্করণ:

f=@(n)[0 4 0 2 0 1 3 7 5 7 6 7;2 6 1 3 4 5 1 5 4 6 2 3](:,2*n+(1:2))

এমনকি পুরানো সংস্করণ:

এটি সত্যিই 2x2x2 অ্যারে তৈরি করবে এবং তারপরে একটি 'স্লাইস' বেছে নেবে। আমরা একটি 3 ডি ম্যাট্রিক্স ক্রমানুসরণ করি এবং প্রতিবার শীর্ষ বা নীচের স্লাইসটি নির্বাচন করি। (এটি ম্যাট্রিক্সের পরিবর্তে কোনও এক্সপ্রেশনকে সূচকের কারণে ম্যাটল্যাবে কাজ করে না) আমি নিশ্চিত যে এটি করার আরও প্রত্যক্ষ উপায় থাকবে যা সংক্ষিপ্ত হবে।

f=@(n)squeeze(permute(reshape(0:7,2,2,2),circshift((1:3)',n))(n=fix(n/3)+1,circshift((1:2)',n-1),:))

f=@(n)squeeze(permute(reshape(0:7,2,2,2),circshift((1:3)',n))(floor(n/3)+1,circshift((1:2)',floor(n/3)),:))

5

সিজেএম, 31 28 (বা 26) বাইট

8,2/W%_1m<]z[D75K46]2/+ri=N*

যা একটি 26 বাইট সংস্করণে বেস রূপান্তর ব্যবহার করে সংকুচিত করা যেতে পারে ।

কিউবটিকে এমন মনে হয়:

  7-----1
 /|    /|
5-----3 |
| |   | |
| 6---|-0
|/    |/
4-----2

মত মুখের সাথে

  7-----1      .-----.      .-----.      .-----.
 /  4  /|     /  4  /|     /  4  /|     /  0  /|
5-----3 |    .-----. |    .-----. |    .-----. |
|     |2|    |     |1|    |     |0|    |     |5|
|  1  | 0    |  0  | .    |  3  | .    |  3  | .
|     |/     |     |/     |     |/     |     |/ 
4-----2      .-----.      .-----.      .-----.    

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


4

সিজেএম (25 বাইট)

"ñRXµ  roM~"(ib65b2/q~=N*

এটিতে একটি মুদ্রণযোগ্য অক্ষর এবং একটি ট্যাব রয়েছে (যা স্ট্যাকএক্সচেঞ্জ সফ্টওয়্যার দ্বারা ম্যাঙ্গেল করা হবে), তাই xxd ফর্ম্যাটে:

0000000: 22f1 5258 1fb5 0972 6f4d 7e22 2869 6236  ".RX...roM~"(ib6
0000010: 3562 322f 717e 3d4e 2a                   5b2/q~=N*

অনলাইন ডেমো

ঘনক:

  1-----0        Faces:
 /|    /|        10 46
4-----6 |        14 37
| |   | |        20 31
| 3---|-2        23 57
|/    |/         56 20
7-----5          57 64

এটি খাঁটি হার্ড-কোডিং, বেস কমপ্রেসিবিলিটি সর্বাধিককরণের জন্য কিউব শীর্ষকে নির্বাচন করা। আমি ২-সংখ্যার সংখ্যায় ডিকোড করেছি, সুতরাং সেগুলির কোনওটিই 0 দিয়ে শুরু করতে পারে না I আমি কোনওটিই 7 দিয়ে শুরু করতে চাই না, যেহেতু এটি দ্বিতীয় বেসটিকে খুব বেশি ধাক্কা দেয়। সুতরাং 0 এবং 7 অবশ্যই একটি দীর্ঘ তির্যুতে থাকতে হবে। আমি যে এনকোডিং করছি তার মান হ্রাস করতে প্রথমে 10 প্রান্ত চাই। তা ছাড়া, বাইট সংখ্যাটি পরিবর্তন না করে নমনীয়তার পরিমাণ যথেষ্ট fair

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


4

জাভাস্ক্রিপ্ট (ES6), 53 62

সম্পাদনা করুন সংরক্ষণ করুন 8 টেমপ্লেট স্ট্রিং, ধন্যবা @NinjaBearMonkey ব্যবহার বাইট। সাবধান, উদ্ধৃতিগুলির মধ্যে থাকা নতুন লাইনগুলি তাৎপর্যপূর্ণ এবং ধসে পড়তে পারে না।

জাভাস্ক্রিপ্টে চালাক হতে পারে না, এটি খুব ভার্বোস।

f=n=>`01
23
45
67
01
31
5702
64`.substr(n-4?n*3:20,5)

আউটপুট for(i=0;i<6;i++)console.log(f(i),i)

01
23
0

23
45
1

45
67
2

67
01
3

02
64
4

31
57
5

নম্বর সমিতিগুলি যাচাই করার জন্য স্নিপেট দেখুন ( এটি মজাদার ছিল)


1
আপনি যদি ES6 টেমপ্লেট স্ট্রিং ব্যবহার করেন তবে আপনি এর পরিবর্তে অ্যাকটিয়াল নিউলাইন অক্ষর ব্যবহার করতে পারেন, এটিতে \n8 টি বাইট সংরক্ষণ করা উচিত।
নিনজাবিয়ারমোনকি

টেমপ্লেট স্ট্রিংয়ের জন্য উদ্ধৃতি চিহ্নের পরিবর্তে আপনাকে টিক চিহ্ন ব্যবহার করতে হবে।
নিনজাবিয়ারমোনকি

ঠিক আছে, আমি বাস্তবে এটি পরীক্ষা করেছি।
edc65

4

রুবি রেভ 1, 40 36

->(c){print(c^1,c,"\n",6|c,(c+3)%6)}

4 বাইট সংরক্ষণ করতে ল্যাম্বডা ব্যবহার করার পরামর্শ দেওয়ার জন্য @rcrmn কে ধন্যবাদ। আমি এটিকে বেনামে রাখার বিষয়ে নিশ্চিত ছিলাম না তবে মনে হয় এটি এখানে মেটা নিয়ে আলোচনা করা হয়েছিল এবং সিদ্ধান্ত নিয়েছে এটি ঠিক আছে।

এখানে আমার রেভ 0 রুবি উত্তরের সাথে তুলনা করার জন্য এটি 40-বাইট ফাংশন হিসাবে রয়েছে, নীচেও (মূল সি উত্তরটি আলাদা পোস্টে রয়েছে in)

def f(c)print(c^1,c,"\n",6|c,(c+3)%6)end

রানার 1112 থেকে আরও অনুপ্রেরণা: এটি তার সর্বশেষ (16 বাইট!) উত্তরে ব্যবহৃত নম্বর স্কিমের পরিবর্তনের উপর নির্ভর করে। ফিনোটপি-র স্কিমের একটি সরাসরি বন্দর একই স্কোর দেবে।

রেভ 0 থেকে নম্বরটি এক ধাপে স্থানান্তরিত করে এবং সমস্ত এক্সওআর 1 গ্রহণ করে আমরা নীচের ঘনকটি পাই:

4---7
|   |
| 1 |
|   |
1---0---7
|   |   |
| 0 | 3 |
|   |   |
6---3---2---7
    |   |   |
    | 2 | 5 |
    |   |   |
    6---5---4
        |   |
        | 4 |
        |   |
        6---1

আউটপুট

0
10
63

1
01
74

2
32
65

3
23
70

4
54
61

5
45
72

রুবি রেভ 0, 56 52 50

এর ()%6থেকে অপ্রয়োজনীয় c-dএবং অন্য 2 টি দ্বারা চালিত দ্বারা বাইট সংরক্ষণ করা হয়েছে (রানার 1112 দ্বারা অনুপ্রাণিত) দ্বারা 6+c%2 --> 6|c

স্কোরটি ফাংশনটির জন্য, যা কেবল প্রথম লাইন। আমি রুবির কাছে নতুন এবং আমি আশ্চর্য হয়েছি যে একটি ইউজার ইনপুট নম্বর এন-তে পাওয়ার জন্য আমি 12 টি অক্ষরের (11 প্লাস নিউলাইন) এর চেয়ে কম উপায় খুঁজে পাচ্ছি না। ফলস্বরূপ, একটি প্রোগ্রামের পরিবর্তে একটি ফাংশন করা 1 বাইট সংরক্ষণ করে।

def f(c)d=c%2*2-1;print((c+d)%6,c,"\n",c|6,c-d)end

n=gets.to_i
f(n)

এটি আমার সি উত্তরের একটি বন্দর। সি তে %অপারেটর একটি নেতিবাচক সংখ্যার সাথে একটি নেতিবাচক মান প্রদান করে। রুবিতে এটি সর্বদা একটি ইতিবাচক মান দেয়, তাই 1 এ যোগ করার দরকার নেই c। ফলস্বরূপ, মুখের সংখ্যা নীচে 1 করে স্থানান্তরিত করা সুবিধাজনক:

0---7
|   |
| 1 |
|   |
1---2---7 
|   |   |
| 2 | 3 |
|   |   |
6---3---4---7
    |   |   |
    | 4 | 5 |
    |   |   |
    6---5---0
        |   |
        | 0 |
        |   |
        6---1

নতুন মুখের সংখ্যা নির্ধারণের সাথে, প্রোগ্রামটি উপরে বর্ণিত সন্ধ্যাগুলি মুদ্রণ করে এবং প্রতিক্রিয়া 180 ডিগ্রি দিয়ে ঘোরানো:

1
21
70

2
12
63

3
43
72

4
34
65

5
05
74

0
50
61

আমি বিশ্বাস করি আপনি ল্যাম্বডাস ব্যবহার করে ফাংশনটি সংক্ষিপ্ত করতে পারবেন: ->(x){...code...}যা আপনার ফাংশন সংজ্ঞাটি 4 টি অক্ষরকে সংক্ষিপ্ত করে ফেলে। এরপরে এটির ব্যবহারের জন্য আপনাকে এটিকে ভেরিয়েবলের কাছে নির্ধারণ করতে হবে এবং এটিকে # কল
রোরালর্ক

@ সিআরএম ধন্যবাদ, আপনি ঠিক বলেছেন, f=->(c){print(c^1,c,"\n",6|c,(c+3)%6)}চালাচ্ছেন এবং 2 টি অক্ষর খাটো হবে (আমি যদি বাদ দিই তবে 4 টি অক্ষর ছোট হবে f=)। এটির ন্যায্যতাটি বাদ দেওয়া হবে কিনা তা নিশ্চিত f=নয় তবে প্রশ্নটি ফাংশন বেনামে থাকতে পারে না। আমার কাছে যা অদ্ভুত লাগছে তা হ'ল এই সিনট্যাক্সটি প্রাথমিকভাবে দেখানো সিনট্যাক্স থেকে সম্পূর্ণ আলাদা, এর ধনুর্বন্ধনীগুলির মধ্যে উত্তীর্ণ প্যারামিটার রয়েছে:f=lambda{|c|print(c^1,c,"\n",6|c,(c+3)%6)}
লেভেল রিভার সেন্ট

এটিকেই ল্যাম্বডা আক্ষরিক বলা হয়। এবং প্রকৃতপক্ষে যখন সিনট্যাক্সটি মনে রাখা দরকার তখনই রেফারেন্স খুঁজে পাওয়া আমার পক্ষে সবসময় কঠিন ...
রোরালর্ক

3

পাইথ, 30

ধন্যবাদ 2 জ্যাকেটের জন্য জাকুব

Jc2jkfx>Q2!.&T^2%Q3U8jb?_J%Q2J

এখানে চেষ্টা করুন।

পাইথ বিশেষজ্ঞদের গল্ফিং পরামর্শ দয়া করে গ্রহণ করা হবে। বিশেষত আমি মনে করি আউটপুট বিভাগে কিছু উন্নতি হতে পারে।

নিম্নলিখিত অজগর বন্দরের: ...

পাইথন, 109

Q=input()
s=''.join(map(str,filter(lambda v:(Q<3)^(v&(1<<Q%3)>0),range(8))))
print s[1-Q%2::2],'\n',s[Q%2::2]

... যা একটি বন্দর

খাঁটি বাশ, 130

ব্যাখ্যার উদ্দেশ্যে:

for v in {0..7};{
if(($1/3));then((v&(1<<$1%3)))&&a+=$v
else((v&(1<<$1%3)))||a+=$v
fi
}
i=$[$1%2*2]
echo "${a:i:2+i}
${a:2-i:4-i}"

ঘনক্ষেত্রের শীর্ষগুলি এভাবে সংখ্যাযুক্ত:

  4-----5
 /|    /|
0-----1 |
| |   | |
| 6---|-7
|/    |/
2-----3

এবং মুখগুলি এভাবে গণনা করা হয়:

Face  Vertices  Swap
   0  0,2,4,6
   1  0,1,4,5   x
   2  0,1,2,3
   3  1,3,5,7   x
   4  2,3,6,7
   5  4,5,6,7   x

Swapকলাম নির্দেশ করে ছেদচিহ্ন ক্রম আউটপুটে সুইচড দিতে হবে।

অ্যালগরিদমটি সমস্ত শীর্ষে {0..7 with দিয়ে শুরু হয়} শীর্ষস্থানীয় সংখ্যাগুলিতে সেট বিট অনুসারে ভার্টিসগুলি অপসারণ করা হয়:

  • 0,1 এবং 2 মুখের জন্য, যথাক্রমে 1,2 বা 3 বিট সমেত উল্লম্ব রাখা হয়
  • 3,4 এবং 5 মুখের জন্য, যথাক্রমে 1,2 বা 3 সেট বিট সহ উল্লম্ব রাখা হয়

"রক্ষিত" অনুভূমিকগুলি একটি স্ট্রিংয়ে সংযুক্ত করা হয়। স্ট্রিংটি আউটপুট অক্ষর 0,1 তারপর 2,3 বা তদ্বিপরীত হয়, স্বাপের পতাকা (মুখ সংখ্যা মোড 2) সেট করা আছে তার উপর নির্ভর করে।


1

জে - 26 বাইট

যুক্তি হিসাবে মুখ সংখ্যা নেওয়া এবং অঙ্কগুলির গ্রিডটি ফাংশন।

0{.@":"0@{0&(|:|.)&(i.3#2)

আমরা নিম্নলিখিত কিউব ব্যবহার করছি:

  4-----5    Face numbers:
 /|    /|     0 - front
0-----1 |     1 - top
| |   | |     2 - left
| 6---|-7     3 - back
|/    |/      4 - bottom
2-----3       5 - right

উদাহরণ ( tryj.tk এ নিজে চেষ্টা করুন ):

   0{.@":"0@{0&(|:|.)&(i.3#2) 3         NB. inline
76
54
   f =: 0{.@":"0@{0&(|:|.)&(i.3#2)      NB. named
   f each 0 1 2 3 4 5                   NB. all results
+--+--+--+--+--+--+
|01|40|64|76|37|13|
|23|51|20|54|26|57|
+--+--+--+--+--+--+

রুটি এবং মাখন হয় 0&(|:|.)। এটি এমন একটি ক্রিয়া যা ঘনক্ষেত্রকে বিপরীত করে এবং ঘোরান যেমন পুনরাবৃত্তভাবে প্রয়োগ করার সময় প্রতিটি মুখ দেখা করতে পারে যা আমরা ইনপুট আর্গুমেন্টটি ব্যবহার করে যা করি। কিউবের শিখরগুলি উত্পন্ন হয় i.3#2, সুতরাং আমরা এটিকে প্রারম্ভিক বিন্দু হিসাবে ব্যবহার করি এবং শেষ হয়ে গেলে সামনের মুখটি নিয়ে 0...{যাই।

অঙ্কগুলি স্ট্রিং হিসাবে মুদ্রণের জন্য 8 টি অক্ষর লাগে: {.@":"0@যদি আমাদের কেবল অ্যারে ফেরত দেওয়ার অনুমতি দেওয়া হয় তবে এটি 8 টি সম্পূর্ণ অক্ষরের সঞ্চয় saving [মুষ্টি-কাঁপুনি এবং অনিবার্য গ্রিপিং শুরু করে]


1, 4 এবং 5 এর ফলাফলগুলি বিপরীত বলে মনে হচ্ছে
ডিজিটাল ট্রমা

0

> <> (মাছ) , 38 বাইট

'/ =/2= 28"H5'a@i-!
noan~\;
~>:?!^1-@~

প্রতিটি আউটপুট দুটি 2-সংখ্যক সারি হিসাবে সংরক্ষণ করা হয়। সারিগুলিকে স্ট্রিংয়ে চারকোড হিসাবে সঞ্চিত করা হয় '/ =/2= 28"H'(যে সারিটি 10স্ট্রিংয়ের পরে সংযুক্ত করা হয় তা বাদে a)। প্রথম অক্ষর ( / = 47) দ্বিতীয় ইন্টারঅ্যাকশনে প্রোগ্রামের প্রবাহকে পুনর্নির্দেশের জন্য ব্যবহৃত হয়।

শীর্ষ 2*(53-n)উপাদানগুলি বাতিল করা হয় (যেখানে এন ইনপুট নম্বরটির চারকোড হয়) এবং পরবর্তী দুটি কোড এর মধ্যে একটি নতুন লাইন দিয়ে মুদ্রিত হয়।

লেআউট:

  3-----2
 /|    /|
4-----7 |
| |   | |
| 5---|-0
|/    |/
6-----1      0 1 2 3 4 5 sides are top front bottom back left right respectively.
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.