অঙ্কের গ্রিড তৈরি করুন


15

এলোমেলো সংখ্যায় ভরা একটি 7 বাই 7 গ্রিড উত্পন্ন করুন। তবে, একটি বিজোড় সারি এবং কলাম নম্বর (0 থেকে শুরু) সহ কক্ষগুলিতে, আপনাকে অবশ্যই আশেপাশের ঘরগুলির যোগফলটি ব্যবহার করতে হবে। এখানে একটি 3 বাই 3 গ্রিড (সমষ্টি-বর্গাকার সাহসী) সহ একটি ছোট উদাহরণ রয়েছে:

2 2  2
2 16 2
2 2  2

এবং এখানে 7 বাই 7 গ্রিডের একটি উদাহরণ রয়েছে:

6 5  4 3  7 2  5
6 43 3 50 8 43 8
4 7  8 8  9 3  1
4 36 1 43 6 40 5
3 3  6 1  4 7  5
4 35 3 45 9 42 1
2 6  8 6  8 5  3

বিধি

  • যে সংখ্যার অঙ্কগুলি হয় না তা সর্বদা 1 এবং 9 এর মধ্যে থাকা উচিত।

  • গ্রিড অবশ্যই এলোমেলোভাবে উত্পন্ন করা উচিত। প্রতিটি অ-অঙ্কের জন্য, প্রতিটি সংখ্যার অবশ্যই উপস্থিত থাকার সমান সুযোগ থাকতে হবে, এটি যে ঘরে রয়েছে তা নির্বিশেষে।

  • নম্বরগুলি সারিবদ্ধ করতে হবে। এর অর্থ হ'ল একটি কলামে প্রতিটি সংখ্যার প্রথম বা শেষ সংখ্যাটি অবশ্যই উল্লম্বভাবে লাইন রেখেছে। (আপনি ধরে নিতে পারেন মাঝের সংখ্যাগুলি সর্বদা দুটি অঙ্কের হবে))

  • চারপাশের কোষগুলিতে তির্যক অন্তর্ভুক্ত। সুতরাং, প্রতিটি সমষ্টি বর্গের চারপাশে আটটি সংখ্যা থাকবে, যা আপনাকে অবশ্যই যুক্ত করতে হবে add

  • সংক্ষিপ্ততম কোড জিতেছে, যেহেতু এটি


3
এটা আছে আছে প্রথম সংখ্যা যে লাইন আপ করা কিভাবে? অর্থাৎ এটি শেষ হতে পারে?
অস্থিরতা

@ অস্থিরতা আমি মনে করি ডান প্রান্তিককরণ কাজ করবে। সম্পাদিত
ডুরকনব

কোনও ভাষার যদি এলোমেলো নম্বর জেনারেটর না থাকে তবে কী হবে?
হিমডল

উত্তর:


14

এপিএল, 53 49 43 42 40 39 39 36

আমি জে এর ;.এপিএলে প্রতিলিপি করতে সক্ষম হয়েছি এবং 13 টি অক্ষর সাশ্রয় করে গ্যারেথের পদ্ধতির ব্যবহার করেছি ।

{×5⌷⍵:5⌷⍵⋄+/⍵}¨3,⌿3,/×∘?∘9¨∘.∨⍨9⍴0 1

নমুনা রান:

      {×5⌷⍵:5⌷⍵⋄+/⍵}¨3,⌿3,/×∘?∘9¨∘.∨⍨9⍴0 1
9  9 6  1 7  5 6
7 55 5 39 9 54 9
9  8 2  1 8  1 9
2 43 8 41 6 42 5
7  3 4  4 8  3 2
2 29 1 26 2 35 8
6  4 2  3 2  3 7

ব্যাখ্যা:

  • ∘.∨⍨9⍴0 1 একটি বিট মাস্ক উত্পন্ন।
  • ×∘?∘9¨ এলোমেলো সংখ্যার একটি মুখোশযুক্ত গ্রিড উত্পন্ন করে 1 থেকে 9 অন্তর্ভুক্ত করে এলোমেলো মান দ্বারা প্রতিটি বিটকে গুণিত করে।
  • 3,⌿3,/মুখোশযুক্ত অ্যারেতে সমস্ত 3 বাই 3 ওভারল্যাপিং বাক্সগুলি ফিরিয়ে আনার জন্য হ্যাকারি হিসাবে বর্ণনা করা যায় এমনটি ব্যবহার করে। এগুলি প্রক্রিয়াতেও সমতল হয়।
  • {×5⌷⍵:5⌷⍵⋄+/⍵}¨অ্যারের উপরে পুনরাবৃত্তি, প্রতিটি উপাদানকে নির্ধারিত করে । প্রতিটি পুনরাবৃত্তির জন্য, এটি পঞ্চম (মধ্যম, এপিএল সূচক 1-ভিত্তিক মনে করে) লাগে এবং তার চিহ্নটি প্রদান করে। এই ক্ষেত্রে এটি পরীক্ষার সমতুল্য যদি সংখ্যাটি 0 এর চেয়ে বেশি হয় তবে যদি এটি 1 (সত্য হিসাবে) প্রদান করে, তবে সেই উপাদানটি ফিরুন। অন্যথায়, সমতল 3 বাই 3 বাক্সের উপাদানের যোগফলটি ফেরত দিন। এটি :⋄টার্নারি অপারেটর ব্যবহার করে , যা ?:অনেক ভাষায় সমান ।

আহ ওহ. দেখে মনে হচ্ছে আমাকে আরও চরিত্রের সঞ্চয় খুঁজে পেতে হবে। : -এস
গ্যারেথ

@ গ্যারেথ ভাল, দেখুন আমাদের এখানে কী আছে। আমি নেতৃত্বে ফিরে এসেছি: পি
অস্থিরতা

NOOOOOOOOOO !!!!!!! :-(
গ্যারেথ

13

জে, 63 61 59 55 52 51 49 47 39 37 টি অক্ষর

3 3(4&{+4{*|+/)@,;._3(**1+?)+./~9$0 9

তার 10 চরিত্র সংরক্ষণের জন্য অস্থিরতার জন্য ধন্যবাদ ।

ব্যাখ্যা (প্রতিটি পদক্ষেপে বিভিন্ন এলোমেলো সংখ্যা থাকবে ...):

এলোমেলো সংখ্যা তৈরির জন্য মুখোশ তৈরি করুন (ব্যবহার করুন $:

   9 9$9$0 9
0 9 0 9 0 9 0 9 0
0 9 0 9 0 9 0 9 0
0 9 0 9 0 9 0 9 0
0 9 0 9 0 9 0 9 0
0 9 0 9 0 9 0 9 0
0 9 0 9 0 9 0 9 0
0 9 0 9 0 9 0 9 0
0 9 0 9 0 9 0 9 0
0 9 0 9 0 9 0 9 0

এখন আমরা একটি হুক আছে । এটি যখন আমি পূর্ববর্তী সংস্করণটি হুইটল করছিলাম তখন এটি আসলেই একটি সুখী দুর্ঘটনা। এটি ট্রান্সপোজ |:এবং ওআর +.সাথে আসল বোঝানো হয়েছিল । আমি যেহেতু সেই সময়গুলিতে এবং শূন্যগুলি ব্যবহার করছিলাম তা বুঝতে পেরেছিল তবে এখন আমার কাছে নাইন এবং শূন্য রয়েছে। এটি ঠিক তাই ঘটে যে এটি জিসিডি অর্থের সাথে একইভাবে কাজ করে +.। আমার জন্য ভাগ্যবান। :-)

   (+.|:)9 9$9$0 9
0 9 0 9 0 9 0 9 0
9 9 9 9 9 9 9 9 9
0 9 0 9 0 9 0 9 0
9 9 9 9 9 9 9 9 9
0 9 0 9 0 9 0 9 0
9 9 9 9 9 9 9 9 9
0 9 0 9 0 9 0 9 0
9 9 9 9 9 9 9 9 9
0 9 0 9 0 9 0 9 0

সুতরাং, এখন আমাদের 9s এবং 0 এর গ্রিড রয়েছে আমরা কিছু এলোমেলো সংখ্যা উত্পন্ন করতে চাই। ?প্রদত্ত সংখ্যা 0 থেকে (তবে অন্তর্ভুক্ত নয়) পর্যন্ত একটি এলোমেলো সংখ্যা তৈরি করে। একটি তালিকা দেওয়া হয়েছে এটি তালিকার প্রতিটি সদস্যের জন্য এভাবে একটি করে এলোমেলো সংখ্যা তৈরি করবে। সুতরাং এক্ষেত্রে এটি সারণীতে প্রতি 9 এর জন্য 0 থেকে 8 এবং প্রতিটি 0 এর জন্য 0 থেকে 1 পর্যন্ত একটি ভাসমান পয়েন্ট নম্বর উত্পন্ন করবে।

   ?(+.|:)9 9$9$0 9
 0.832573 7 0.926379 7 0.775468 6 0.535925 3  0.828123
        7 0        5 5        4 3        4 5         4
0.0944584 2 0.840913 2 0.990768 1 0.853054 3  0.881741
        3 8        7 0        8 3        3 4         8
 0.641563 4 0.699892 7 0.498026 1 0.438401 6  0.417791
        6 8        7 5        2 3        6 6         3
 0.753671 6 0.487016 4 0.886369 7 0.489956 5  0.902991
        3 4        7 8        1 4        8 0         8
0.0833539 4 0.311055 4 0.200411 6 0.247177 5 0.0464731

তবে আমরা 0 থেকে 8 নয় 1 থেকে 9 পর্যন্ত সংখ্যা চাই So সুতরাং আমরা 1 যুক্ত করব।

   (1+?)(+.|:)9 9$9$0 9
 1.4139 4  1.7547 7 1.67065 4 1.52987 1 1.96275
      2 8       2 4       3 9       6 9       9
1.15202 7 1.11341 5  1.0836 1 1.24713 2 1.13858
      9 3       3 2       4 7       3 8       6
1.06383 9 1.67909 4 1.09801 8  1.4805 6  1.0171
      9 5       5 5       9 5       9 4       3
1.22819 1 1.85259 4 1.95632 6 1.33034 3 1.39417
      4 2       5 1       3 7       2 5       6
1.06572 5  1.9942 5 1.78341 5 1.16516 6 1.37087

এটি খুব সুন্দর তবে আমি যে শুন্যগুলি চাই তা আমরা হারিয়ে ফেলেছি, তাই আমরা সমস্ত নাইনগুলিকে একটি করে রূপান্তর করার পরে এটি মূল মুখোশ দিয়ে বহুগুণ করব। আমি চেক করে এই কাজ যদি মান 1. তার চেয়ে অনেক বেশী আমাদের দেয় যে: (1&<*1+?)
এখানে বেশ কয়েকটি জিনিস চলছে:

  • আমরা একটি কাঁটাচামচ তৈরি করেছি যা আমাদের খুব কম চরিত্রে প্রচুর কাজ প্যাক করতে দেয়।
  • আমরা ক্রিয়াপদে &1 টি বন্ধন করেছি've<

সুতরাং সমস্ত মিলিত (1&<*1+?)হ'ল এলোমেলো সংখ্যা উত্পন্ন করছে এবং সমস্ত সংখ্যাকে শূন্য করছে যা মূল গ্রিডে শূন্যগুলি দ্বারা উত্পাদিত হয়েছিল।

   (1&<*1+?)(+.|:)9 9$9$0 9
0 3 0 2 0 7 0 1 0
9 5 2 7 7 1 4 5 7
0 6 0 8 0 3 0 1 0
4 8 7 5 9 7 7 9 4
0 9 0 6 0 9 0 9 0
6 1 2 1 4 6 8 9 4
0 3 0 8 0 6 0 6 0
2 5 2 2 2 2 3 9 3
0 9 0 3 0 5 0 3 0

পরের বিটটি হ'ল (আমার মতে, যাইহোক :-) চালাক বিট।
কাটা ;.ক্রিয়াটির একটি ফর্ম থাকে x u;._3 yযা বর্ণিত বাক্সগুলিতে ইনপুট কেটে দেয় xএবং তারপরে ক্রিয়াটি প্রয়োগ uকরে। এই ক্ষেত্রে আমাদের আছে 3 3(4&{++/*0=4&{)@,;._3

  • 3 3বক্স আমরা চাই বর্ণনা করা হয় - 3x3।
  • (4&{++/*0=4&{)@,একটি ক্রিয়াপদ ট্রেন যা বর্ণনা করে কি আমরা একে বাক্সে কাজ করতে চান হয়।

;.ক্রিয়াটি প্রদর্শন করতে আমি <প্রতিটি বাক্সটি দেখানোর জন্য ব্যবহার করব :

   3 3(<);._3(1&<*1+?)(+.|:)9 9$9$0 9
┌─────┬─────┬─────┬─────┬─────┬─────┬─────┐
│0 8 0│8 0 7│0 7 0│7 0 4│0 4 0│4 0 3│0 3 0│
│9 1 3│1 3 2│3 2 3│2 3 8│3 8 5│8 5 5│5 5 9│
│0 6 0│6 0 1│0 1 0│1 0 2│0 2 0│2 0 4│0 4 0│
├─────┼─────┼─────┼─────┼─────┼─────┼─────┤
│9 1 3│1 3 2│3 2 3│2 3 8│3 8 5│8 5 5│5 5 9│
│0 6 0│6 0 1│0 1 0│1 0 2│0 2 0│2 0 4│0 4 0│
│7 1 6│1 6 7│6 7 1│7 1 2│1 2 1│2 1 6│1 6 1│
├─────┼─────┼─────┼─────┼─────┼─────┼─────┤
│0 6 0│6 0 1│0 1 0│1 0 2│0 2 0│2 0 4│0 4 0│
│7 1 6│1 6 7│6 7 1│7 1 2│1 2 1│2 1 6│1 6 1│
│0 7 0│7 0 5│0 5 0│5 0 9│0 9 0│9 0 7│0 7 0│
├─────┼─────┼─────┼─────┼─────┼─────┼─────┤
│7 1 6│1 6 7│6 7 1│7 1 2│1 2 1│2 1 6│1 6 1│
│0 7 0│7 0 5│0 5 0│5 0 9│0 9 0│9 0 7│0 7 0│
│7 9 9│9 9 7│9 7 1│7 1 9│1 9 4│9 4 9│4 9 5│
├─────┼─────┼─────┼─────┼─────┼─────┼─────┤
│0 7 0│7 0 5│0 5 0│5 0 9│0 9 0│9 0 7│0 7 0│
│7 9 9│9 9 7│9 7 1│7 1 9│1 9 4│9 4 9│4 9 5│
│0 3 0│3 0 2│0 2 0│2 0 7│0 7 0│7 0 9│0 9 0│
├─────┼─────┼─────┼─────┼─────┼─────┼─────┤
│7 9 9│9 9 7│9 7 1│7 1 9│1 9 4│9 4 9│4 9 5│
│0 3 0│3 0 2│0 2 0│2 0 7│0 7 0│7 0 9│0 9 0│
│3 1 6│1 6 1│6 1 7│1 7 6│7 6 8│6 8 9│8 9 9│
├─────┼─────┼─────┼─────┼─────┼─────┼─────┤
│0 3 0│3 0 2│0 2 0│2 0 7│0 7 0│7 0 9│0 9 0│
│3 1 6│1 6 1│6 1 7│1 7 6│7 6 8│6 8 9│8 9 9│
│0 9 0│9 0 3│0 3 0│3 0 4│0 4 0│4 0 3│0 3 0│
└─────┴─────┴─────┴─────┴─────┴─────┴─────┘

কিছু বিষয় লক্ষ্য করুন:

  • বাক্সগুলি ওভারল্যাপ করে - উপরের বাম বাক্সের দ্বিতীয় এবং তৃতীয় কলামগুলি এর ডানদিকে বাক্সে প্রথম এবং দ্বিতীয়।
  • 7x7 বাক্স আছে। এজন্য প্রাথমিকভাবে আমাদের 9x9 গ্রিড ছিল।
  • আমাদের একটি যোগফলের প্রয়োজন প্রতিটি জায়গার 0বাক্সের কেন্দ্রে রয়েছে।

এখন আমাদের কেবলমাত্র কেন্দ্রের পিছনে মানটি পাস করতে হবে (যদি এটি শূন্য হয় না) বা 3x3 বাক্সে সংখ্যার যোগ করতে হবে (যদি কেন্দ্রটি শূন্য হয়)।
এটি করার জন্য আমাদের কেন্দ্রের নম্বরটিতে সহজে অ্যাক্সেস দরকার। ,এখানে সাহায্য করে। এটি 3x3 গ্রিডটি 9 নম্বরের কেন্দ্রের নম্বর সহ 9 টি আইটেমের তালিকায় পরিণত করে এবং কেন্দ্রের মানটি টেনে আনতে
4&{ব্যবহার করবে {এবং তারপরে 0: এর সাথে তুলনা করবে 0=4&{। একটি এই আয় 0বা 1জন্য সত্য বা মিথ্যা, যা আমরা তারপর সংখ্যাবৃদ্ধি দ্বারা সমষ্টি +/। এটি কেন্দ্রে শূন্য হলে এখন আমাদের প্রয়োজন অনুসারে যোগফল রয়েছে। যদি এটি না হয় তবে আমাদের শূন্য ছিল না, তাই শেষ করতে আমরা কেবলমাত্র কেন্দ্রের মানটি যুক্ত করি 4&{+
এটি ক্রিয়াপদ ট্রেন দেয়(4&{++/*0=4&{)@,

   3 3(4&{++/*0=4&{)@,;._3(1&<*1+?)(+.|:)9 9$9$0 9
2  6 9  3 7  9 7
3 47 6 51 5 49 5
3  9 9  6 6  2 8
7 48 6 47 1 37 5
5  4 5  7 7  2 6
5 35 3 49 8 51 9
1  6 6  6 7  4 8

আপনার কোডের একটি লাইন এলোমেলো সংখ্যা উত্সাহিত করা সহ সমস্ত কিছু করে? আমাকে আশ্বাস দিন বিশ্বাস করা কেবল কঠিন মনে হচ্ছে।
ডেভিডসি

হ্যাঁ, বিশ্বাস করা যতটা কঠিন। এলোমেলো বিট দ্বারা ?। আমি নতুন সংস্করণ প্রতিফলিত করার জন্য ব্যাখ্যাটি পরিবর্তন করব।
গ্যারেথ

@ ডেভিডকারারহর জে সর্বাধিক ক্রিয়াগুলি 1 বা 2 বর্ণের হয় তাই 47 টি অক্ষর প্রচুর কাজে প্যাক করতে পারে।
গ্যারেথ

9x9 বাক্সটি 7x7 ওভারল্যাপিং স্কোয়ারে কাটাটি অবশ্যই চালাক বিট। 10 মিনিটেরও কম সময়ে আমি আমার বর্তমান গল্ফস্ক্রিপ্ট বাস্তবায়ন 7.5% দ্বারা পরাস্ত করতে এটি প্রয়োগ করতে সক্ষম হয়েছি।
পিটার টেলর

ওহ ভাল, দেখে মনে হচ্ছে এটি আমার জন্য অঙ্কন বোর্ডে ফিরে এসেছে।
অস্থিরতা

5

রুবি (১৩৫ টি অক্ষর)

a=(0..48).map{rand(9)+1}
([0,0,j=8]*3).each{|l|a[j]=[0,1,6,7,8].inject{|s,e|s+a[j+e]+a[j-e]};j+=l+2}
a.each_slice(7){|r|puts"%-3s"*7%r}

নমুনা আউটপুট

2  1  6  9  4  5  1  
9  34 4  37 2  31 3  
7  2  3  1  8  1  7  
5  42 4  40 2  47 9  
3  9  9  4  9  4  7  
3  44 4  41 2  47 4  
6  9  1  5  7  6  8  

ভাঙ্গন

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

নিষ্পাপ সংস্করণ

দ্বি-মাত্রিক অ্যারে নির্ভর করে এমন অন্যান্য রুবি সমাধানগুলির বিপরীতে , আপনি (শেষ পর্যন্ত) 1-মাত্রিক অ্যারে দিয়ে শুরু করে এবং অফসেট মানগুলির সাথে কাজ করে সংক্ষিপ্ত সংস্করণ পেতে পারেন, কারণ নিদর্শনগুলি পুনরাবৃত্তি করে।

ary=(0..48).map { rand(9) + 1 }

offsets = [-8,-7,-6,-1,1,6,7,8]

3.times do |i|
  [8,10,12].each do |j|
    ary[j + 14*i] = ary.values_at(*offsets.map { |e| j+14*i + e }).inject(:+)
  end
end

ary.each.with_index do |e,i|
  $> << ("%-3s" % e)
  $> << ?\n if i % 7==6
end

এখানে মূল নীতিটি হ'ল আমরা সূচী অবস্থানে 8, 10, 12 এ কাজ করছি, এটি কেবল 14 এর গুণক দ্বারা অফসেট 8. 8, 10 এবং 12 অবস্থানগুলি 3x3 গ্রিডের কেন্দ্র যা আমরা সংক্ষেপণ করছি। নমুনা আউটপুটে 34 অবস্থান 8, 42, 8 + 14 * 1, ইত্যাদি অবস্থান আমরা সঙ্গে 34 অবস্থানের দ্বারা অবস্থানে 8 থেকে অফসেট অবস্থান 8 প্রতিস্থাপন [-8,-7,-6,-1,1,6,7,8]- অন্য কথায় 34 = sum(ary[8-8], ary[8-7], ..., ary[8+8])[8 + 14*i, 10 + 14*i, 12 + 14*i]প্যাটার্নটি পুনরাবৃত্তি হওয়ার পরে, এই একই নীতিটি সমস্ত মানগুলির জন্য ধারণ করে।

এটি অপ্টিমাইজ করা

প্রথমত, কিছু দ্রুত প্রত্যাশা:

  • পরিবর্তে 3.times { ... }, এবং j + 14*iপ্রতিবার গণনা করা , অবস্থানগুলি "ইনলাইন" করুন [8,10,12,22,24,26,36,38,40]
  • offsetsঅ্যারে একবার ব্যবহার হয়, তাই আক্ষরিক সঙ্গে পরিবর্তনশীল প্রতিস্থাপন করুন।
  • প্রতিস্থাপন do ... endসঙ্গে {...}এবং প্রিন্টিং প্রায় সুইচ $> << foo। (এখানে একটি কৌশল জড়িত রয়েছে puts nilএবং () == nil))
  • সংক্ষিপ্ত পরিবর্তনশীল নাম।

এর পরে কোডটি 177 টি অক্ষর:

a=(0..48).map{rand(9)+1}
[8,10,12,22,24,26,36,38,40].each{|j|a[j]=a.values_at(*[-8,-7,-6,-1,1,6,7,8].map{|e|j+e}).inject(:+)}
a.map.with_index{|e,i|$><<"%-3s"%e<<(?\nif i%7==6)}

পরবর্তী হ্রাসের জন্য, নোট করুন যে injectঅফসেট অ্যারেগুলি ক্রমযুক্ত হওয়ার দরকার নেই। আমরা হয় [-8,-7,-6,-1,1,6,7,8]বা অন্য কোনও অর্ডার করতে পারি, যেহেতু সংযোজনটি পরিবর্তনীয়।

সুতরাং ইতিবাচক এবং নেতিবাচকগুলি পেতে প্রথমে জুটি দিন [1,-1,6,-6,7,-7,8,-8]

এখন আপনি সংক্ষিপ্ত করতে পারেন

[1,-1,6,-6,7,-7,8,-8].map { |e| j+e }.inject(:+)

প্রতি

[1,6,7,8].flat_map { |e| [j+e, j-e] }

এর ফলে

a=(0..48).map{rand(9)+1}
[8,10,12,22,24,26,36,38,40].each{|j|a[j]=a.values_at(*[1,6,7,8].flat_map{|e|[j+e,j-e]}).inject(:+)}
a.map.with_index{|e,i|$><<"%-3s"%e<<(?\nif i%7==6)}

যা 176 টি অক্ষর।

8 দ্বারা শিফট করুন এবং পার্থক্যে সরান

দ্বি-চরিত্রের আক্ষরিক মানগুলি দেখে মনে হচ্ছে এগুলি ছোট করা যেতে পারে, তাই লুপের শুরুতে আপডেট [8,10,12,22,24,26,36,38,40]করে সবকিছু নীচে নিয়ে যান এবং স্থানান্তরিত করুন । (নোট করুন যে অফসেট মানগুলি আপডেট করার প্রয়োজন এড়িয়ে চলে ))8j+=81,6,7,8

a=(0..48).map{rand(9)+1}
[0,2,4,14,16,18,28,30,32].each{|j|j+=8;a[j]=a.values_at(*[1,6,7,8].flat_map{|e|[j+e,j-e]}).inject(:+)}
a.map.with_index{|e,i|$><<"%-3s"%e<<(?\nif i%7==6)}

এটি 179, যা বড়, তবে j+=8প্রকৃতপক্ষে সরানো যেতে পারে।

প্রথম পরিবর্তন

[0,2,4,14,16,18,28,30,32]

পার্থক্য একটি অ্যারে:

[2,2,10,2,2,10,2,2]

এবং প্রাথমিকভাবে এই মানগুলি সংযোজন করুন j=8। এটি শেষ পর্যন্ত একই মানগুলি আবরণ করবে। (আমরা সম্ভবত প্রথমে 8 টি স্থানান্তরিত না করে সরাসরি এটিতে যেতে পারি))

মনে রাখবেন আমরা এছাড়াও একটি ডামি মান যোগ করব 9999পার্থক্য অ্যারের শেষ, এবং যোগ jশেষ না শুরু লুপের। যৌক্তিকতাটি হ'ল 3 বার পুনরাবৃত্তি হওয়া একই 3 টি সংখ্যার কাছে খুব ভয়ঙ্করভাবে2,2,10,2,2,10,2,2 দেখতে পাওয়া যায় এবং লুপের শেষে গণনা করার মাধ্যমে চূড়ান্ত মানটি আউটপুটকে প্রভাবিত করে না, কারণ কোনও কল নেই যেখানে কিছু মান আছে ওভার ।j+difference9999a[j]j10000

a=(0..48).map{rand(9)+1}
j=8
[2,2,10,2,2,10,2,2,9999].each{|l|a[j]=a.values_at(*[1,6,7,8].flat_map{|e|[j+e,j-e]}).inject(:+);j+=l}
a.map.with_index{|e,i|$><<"%-3s"%e<<(?\nif i%7==6)}

এই পার্থক্যের অ্যারে দিয়ে, j+=8এখন এটি j=8অবশ্যই ন্যায়সঙ্গত , যেহেতু অন্যথায় আমরা বারবার 8অনেকগুলি যুক্ত করতাম । আমরা থেকে ব্লক পরিবর্তনশীল পরিবর্তন করেছি jকরতে l

সুতরাং যেহেতু 9999উপাদানটির আউটপুটটিতে কোনও প্রভাব নেই, তাই আমরা এটিকে পরিবর্তন করতে 10এবং অ্যারে সংক্ষিপ্ত করতে পারি।

a=(0..48).map{rand(9)+1}
j=8
([2,2,10]*3).each{|l|a[j]=a.values_at(*[1,6,7,8].flat_map{|e|[j+e,j-e]}).inject(:+);j+=l}
a.map.with_index{|e,i|$><<"%-3s"%e<<(?\nif i%7==6)}

এটি 170 টি অক্ষর।

তবে এখন j=8চেহারাটি খানিকটা আড়ম্বরপূর্ণ এবং আপনি অ্যাসাইনমেন্টের জন্য ব্যবহার করতে পারেন [2,2,10]এমন সুবিধার্থে 2 দ্বারা নীচে নামিয়ে 2 অক্ষর সংরক্ষণ 8করতে পারেন। এটিও j+=lহয়ে উঠতে হবে j+=l+2

a=(0..48).map{rand(9)+1}
([0,0,j=8]*3).each{|l|a[j]=a.values_at(*[1,6,7,8].flat_map{|e|[j+e,j-e]}).inject(:+);j+=l+2}
a.map.with_index{|e,i|$><<"%-3s"%e<<(?\nif i%7==6)}

এটি 169 টি অক্ষর। 7 টি বর্ণচিহ্নগুলি আটকানোর প্রায় উপায়, তবে এটি ঝরঝরে।

চূড়ান্ত টুইটগুলি

values_atকল অপ্রয়োজনীয় এর আসলে কেমন হয়, এবং আমরা একটি ইনলাইন করতে Array#[]কল। সুতরাং

a.values_at(*[1,6,7,8].flat_map{|e|[j+e,j-e]}).inject(:+)

হয়ে

[1,6,7,8].flat_map{|e|[a[j+e],a[j-e]]}.inject(:+)

আপনি এটিও দেখতে পারেন যে অ্যারেতে প্রাথমিকের সাথে flat_map+ j+e/j-e+ injectআরও সরাসরি সংশ্লেষে হ্রাস করা যায় 0

এটি আপনাকে 152 টি অক্ষরের সাথে ছেড়ে দেয় :

a=(0..48).map{rand(9)+1}
([0,0,j=8]*3).each{|l|a[j]=[0,1,6,7,8].inject{|s,e|s+a[j+e]+a[j-e]};j+=l+2}
a.map.with_index{|e,i|$><<"%-3s"%e<<(?\nif i%7==6)}

অবশেষে:

  • map.with_indexহয়ে যেতে পারে each_slice
  • মুদ্রণের পদ্ধতির পরিবর্তন করুন।

135 :

a=(0..48).map{rand(9)+1}
([0,0,j=8]*3).each{|l|a[j]=[0,1,6,7,8].inject{|s,e|s+a[j+e]+a[j-e]};j+=l+2}
a.each_slice(7){|r|puts"%-3s"*7%r}

আপনি প্রতিস্থাপন করতে পারেন eachসঙ্গে mapএক বাইট জন্য।
জর্ডান

3

পাইথন, 132

এটি প্রযুক্তিগতভাবে নিয়মগুলি সন্তুষ্ট করে না, কারণ প্রতিটি সংখ্যার শেষ অঙ্কগুলি প্রথমটির চেয়ে একত্রিত হয়। তবে আমি ভেবেছিলাম আমি যেভাবেই ভাগ করব:

import numpy
G=numpy.random.randint(1,10,(7,7))
G[1::2,1::2]=sum(G[i:6+i:2,j:6+j:2]for i in[0,1,2]for j in[0,1,2]if i&j!=1)
print G

নমুনা আউটপুট:

[[ 8  9  8  3  8  5  8]
 [ 6 53  4 45  8 53  8]
 [ 8  2  8  1  5  3  8]
 [ 2 40  6 34  1 32  7]
 [ 4  1  9  1  3  3  2]
 [ 4 35  7 35  6 31  1]
 [ 1  7  2  5  2  8  6]]

3

গণিত, 108

s=#-1;;#+1&;g=1+8~RandomInteger~{7,7};Column/@
ReplacePart[g,{i_?EvenQ,j_?EvenQ}:>g〚s@i,s@j〛~Total~2-g〚i,j〛]

ফলাফল

প্র্টটিয়ার আউটপুট জন্য 2 অক্ষর ব্যয় Column/@সঙ্গে প্রতিস্থাপন করা যেতে পারে TableForm@


খুব, খুব চালাক। Grid[ReplacePart[ g, {i_?EvenQ, j_?EvenQ} :> g[[s@i, s@j]]~Total~2 - g[[i, j]]]\[Transpose]]একটি ক্লিনার আউটপুট দেয় এবং যদি আপনি ট্রান্সপোজকে একটি একক চরিত্র হিসাবে গণনা করেন তবে এটি ম্যাথমেটিয়ার মধ্যে কয়েকটি অক্ষর সংরক্ষণ করে a বিটিডব্লিউ, ওল্ফ্রামের ওয়ানলাইনার সাবমিশন টেমপ্লেটে একটি অক্ষর ট্রান্সপোজ সহ 106 টি অক্ষর গণনা করা হয়েছে।
ডেভিডসি

ধন্যবাদ ডেভিডক্যারাহার চর গণনা অপ্রয়োজনীয় নিউলাইন এবং :>একটি প্রতীক হওয়ার কারণে , যদিও এটি ইউনিকোডের ব্যক্তিগত ব্যবহারের ক্ষেত্রে রয়েছে। একটি এমনকি ট্রান্সপোজ অপসারণ করতে পারে, যেহেতু বৈধতার সংমিশ্রনের নিয়ম স্থানান্তরের পরেও রয়েছে। কিন্তু মনে হচ্ছে Gridআরও বিকল্প ছাড়া এন্ট্রি (V8) সারিবদ্ধ নেই
ssch

Gridকলামগুলির মধ্যে সংখ্যাগুলি কেন্দ্র করে। প্রযুক্তিগতভাবে, এটি চ্যালেঞ্জটি পূরণ করতে পারে না, তবে প্রদর্শিত টেবিলে তালিকা উপস্থিত থাকার চেয়ে এটি আরও ভাল দেখাচ্ছে।
ডেভিডসি

খুব সুন্দর. আমি একই জিনিসটি তৈরি করতে যথেষ্ট সময় ব্যয় করি, কেবল আমি ব্যবহার করেছি Partএবং Tuples। শীঘ্রই পোস্ট করা হচ্ছে।
মিঃ উইজার্ড

আপনি এটি দিয়ে দুটি অক্ষর সংরক্ষণ করতে পারেন:p=2|4|6;Column/@ReplacePart[g,{i:p,j:p}:>g[[s@i,s@j]]~Total~2-g[[i,j]]]
মিঃ উইজার্ড

3

গল্ফস্ক্রিপ্ট ( 79 78 72 70 68 66 65 60 চর)

56,{13%5<,~9rand)}%9/`{>3<zip`{>3<(*(+(\{+}*or' '}+7,%n}+7,/

এনবি এটিতে একটি আক্ষরিক ট্যাব রয়েছে যা মার্কডাউনটি ভালভাবে ভেঙে যেতে পারে।

চতুর বিট গ্যারেথের কারণে: তার জে সমাধান দেখুন।

অনলাইন ডেমো


3

আর: 114 টি অক্ষর

a=array(sample(1:9,49,r=T),c(7,7))
for(i in 2*1:3){for(j in 2*1:3)a[i,j]=sum(a[(i-1):(i+1),(j-1):(j+1)])-a[i,j]}
a

প্রথম লাইনটি 1 থেকে 9 পর্যন্ত এলোমেলোভাবে নির্বাচিত সংখ্যায় ভরা একটি 7 বাই 7 অ্যারে তৈরি করুন (প্রতিস্থাপনের সাথে অভিন্ন বিতরণ, যার জন্য r=Tএটি দাঁড়িয়েছে replace=TRUE)। দ্বিতীয় লাইন, 3 বাই 3 গ্রিডের যোগফলগুলি গণনা করুন, কেন্দ্রের কেন্দ্র করুন এবং ফলাফলের সাথে এটি প্রতিস্থাপন করুন। তৃতীয় লাইন ফলাফল গ্রিড মুদ্রণ করুন (ডিফল্টরূপে, ম্যাট্রিক্স এবং অ্যারে কলামগুলি ডানদিকে প্রান্তিক করা হয়)।

উদাহরণ আউটপুট:

     [,1] [,2] [,3] [,4] [,5] [,6] [,7]
[1,]    8    5    6    4    3    2    2
[2,]    1   37    6   41    7   38    8
[3,]    5    3    3    3    9    4    3
[4,]    4   31    3   41    3   44    9
[5,]    3    5    5    9    6    7    3
[6,]    3   32    2   40    4   37    5
[7,]    8    2    4    1    9    1    2

2

জে, 67 65 বাইট

জেতে একটি নির্বোধ এবং ভার্ভোজ সমাধান It এটি কার্যটির প্রত্যক্ষ বাস্তবায়ন।

(+/^:_"2((,&.>/@(<:,],>:)"0)&.>m){0 m}a)(m=.{;~1 3 5)}a=.>:?7 7$9

প্রথমে আমি 1 থেকে 9 এর মধ্যে একটি 7 x 7 অ্যারের পূর্ণসংখ্যা তৈরি করি? আসলে জে এর? ক্রিয়া তার যুক্তি পর্যন্ত সংখ্যা উত্পন্ন করে, এজন্য আমাদের প্রতিটি উপাদানকে বৃদ্ধি করা প্রয়োজন,>: জে

a=.>:?7 7$9 
2 8 7 4 4 5 1
4 5 4 1 6 7 9
3 8 3 6 5 3 3
6 8 6 3 7 7 1
7 7 4 4 5 9 9
2 3 6 5 2 2 9
2 2 6 8 8 1 3

আমি বিজোড় সারি / কোল সেলগুলি শূন্যের জন্য ব্যবহার করার জন্য একটি মাস্ক প্রস্তুত করি, বিজোড় সারি / কলাম সূচকগুলির একটি জোড়া:

m=.{;~1 3 5
┌───┬───┬───┐
│1 1│1 3│1 5│
├───┼───┼───┤
│3 1│3 3│3 5│
├───┼───┼───┤
│5 1│5 3│5 5│
└───┴───┴───┘

ক্যাটালগ ক্রিয়া {বাক্সের তালিকার অভ্যন্তরে পরমাণুগুলির আইটেমগুলি একত্রিত করে

┌─────┬─────┐
│1 3 5│1 3 5│
└─────┴─────┘

একটি ক্যাটালগ গঠন করতে, উপরের জোড়ার 3x3 টেবিল

তারপরে আমি 3x3 সাববারাইয়ের প্রতিটি নির্বাচনের জন্য সারি / কর্নেল সূচকগুলির একটি সারণী প্রস্তুত করি।

s=.(,&.>/@(<:,],>:)"0)&.>m
┌─────────────┬─────────────┬─────────────┐
│┌─────┬─────┐│┌─────┬─────┐│┌─────┬─────┐│
││0 1 2│0 1 2│││0 1 2│2 3 4│││0 1 2│4 5 6││
│└─────┴─────┘│└─────┴─────┘│└─────┴─────┘│
├─────────────┼─────────────┼─────────────┤
│┌─────┬─────┐│┌─────┬─────┐│┌─────┬─────┐│
││2 3 4│0 1 2│││2 3 4│2 3 4│││2 3 4│4 5 6││
│└─────┴─────┘│└─────┴─────┘│└─────┴─────┘│
├─────────────┼─────────────┼─────────────┤
│┌─────┬─────┐│┌─────┬─────┐│┌─────┬─────┐│
││4 5 6│0 1 2│││4 5 6│2 3 4│││4 5 6│4 5 6││
│└─────┴─────┘│└─────┴─────┘│└─────┴─────┘│
└─────────────┴─────────────┴─────────────┘

এম অ্যারে প্রতিটি জোড়ার জন্য আমি এম জোড়ার প্রতিটি সংখ্যার চারদিকে কেন্দ্রীভূত করে একটি ট্রিপল তৈরি করি:

        ┌─────┬─────┐
 1 3 -> │0 1 2│2 3 4│
        └─────┴─────┘

এই জোড়া ট্রিপল্টগুলি জ ফ্রম ক্রিয়া দ্বারা ব্যবহৃত হয় which যা একসাথে একাধিক সারি এবং কলাম নির্বাচন করতে পারে। 0 1 2/2 3 4 এর মানে হল আমি 2, 3 এবং 4 কলামের সাথে 0, 1 এবং 2 সারি নির্বাচন করি, সুতরাং শীর্ষে দ্বিতীয় 3x3 সাববারি নির্বাচন করি।

অবশেষে, আমি টাস্কটি অর্জনের জন্য 7x7 অ্যারে এবং মাস্কগুলি ব্যবহার করতে পারি: প্রথমে আমি সংশ্লিষ্ট উপাদানগুলিকে 0 তে সেট করতে একটি মুখোশ হিসাবে এম ব্যবহার করি:

0 m}a

তারপরে আমি নির্বাচক হিসাবে গুলি ব্যবহার করে সমস্ত 3x3 সাববারি নিই এবং তাদের পরিমাণগুলি পাই:

+/^:_"2 s{0 m}a

তারপরে আমি এই সংখ্যাগুলি আবার শুরু অ্যারেতে রেখেছি into

 (+/^:_"2 s{0 m}a)m}a 
2 8 7 4 4 5 1
4 39 4 39 6 36 9
3 8 3 6 5 3 3
6 44 6 40 7 42 1
7 7 4 4 5 9 9
2 36 6 43 2 46 9
2 2 6 8 8 1 3

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



1

রুবি, 207

আমি আমার সমাধানটি প্রথমে উপস্থাপন করব (যেমন আমি সবসময় করি):

a=Array.new(7){Array.new(7){rand(9)+1}}
s=[-1,0,1]
s=s.product s
s.slice!4
r=[1,3,5]
r.product(r).map{|x|u=0
s.map{|y|u+=a[x[0]+y[0]][x[1]+y[1]]}
a[x[0]][x[1]]=u}
puts a.map{|x|x.map{|y|y.to_s.ljust 3}.join

1

রুবি, 150 টি অক্ষর

v=(a=0..6).map{a.map{rand(9)+1}}
(o=[1,3,5]).map{|i|o.map{|j|v[i][j]=0
(d=[0,-1,1]).map{|r|d.map{|c|v[i][j]+=v[i+r][j+c]}}}}
puts v.map{|r|"%-3d"*7%r}

যদি বামের ন্যায়সঙ্গততার প্রয়োজনীয়তা সমর্থনযোগ্যতা হয় তবে এটি ljustব্যবহার করতে হবে ... ভাল, না। আমি রুবির বিন্যাসের ক্ষমতা পছন্দ করি।

ব্যবহার করবেন না Array.new(7){...}(0..6).map{...}উভয় খাটো এবং আরও পঠনযোগ্য এবং আপনি বিনামূল্যে একটি নির্ধারিত পরিসীমা পান।

ডোরকনব এর সমাধান দ্বারা অনুপ্রাণিত লাইন # 3 ।


1

গল্ফস্ক্রিপ্ট, 87 টি অক্ষর

49,{.1&\7/1&!|9rand)*}%.7/{[..1>@0\+]zip{{+}*}%);}:^%zip{^~}%]zip{.0=!=}%{'  '+3<}%7/n*

সেখানে অনেকগুলি জিপ রয়েছে ... ( অনলাইনে দেখুন )

3  9  9  3  3  9  8  
6  46 2  50 3  39 8  
7  3  7  2  4  7  3  
8  33 9  51 8  49 5  
4  3  9  9  3  9  2  
1  45 9  41 6  33 2  
4  3  6  1  6  1  4  

1

জে, 58/64/67 অক্ষর

0j_1":(7$0,:7$0 1){"0 1 |:>v;v-~7 7{.0,.0,3+/\"1]3+/\v=.1+?7 7$9

স্পেসিফিকেশনটির জন্য সংখ্যাগুলি বাম-প্রান্তিককরণের জন্য প্রয়োজন, দশমিক স্বরলিপি ব্যবহার করার প্রয়োজন নেই, সুতরাং আমার ধারণা এটি বৈধ আউটপুট:

1.0e0 8.0e0 9.0e0 6.0e0 2.0e0 9.0e0 6.0e0
6.0e0 3.9e1 8.0e0 4.0e1 2.0e0 3.8e1 4.0e0
1.0e0 4.0e0 2.0e0 8.0e0 3.0e0 9.0e0 3.0e0
2.0e0 2.4e1 5.0e0 4.1e1 9.0e0 4.7e1 8.0e0
1.0e0 3.0e0 6.0e0 5.0e0 3.0e0 5.0e0 7.0e0
4.0e0 3.0e1 1.0e0 2.3e1 1.0e0 3.1e1 1.0e0
6.0e0 5.0e0 4.0e0 2.0e0 1.0e0 5.0e0 8.0e0

যদি বাম প্রান্তিককরণের পরিবর্তে ডান প্রান্তিককরণ গ্রহণযোগ্য হয়, আমরা 58 টি অক্ষর

(7$0,:7$0 1){"0 1 |:>v;v-~7 7{.0,.0,3+/\"1]3+/\v=.1+?7 7$9

জে এর ":(ফর্ম্যাট) তিনটি বিন্যাস মোড আছে:

  • এন ডিজিটের সাহায্যে বা সঙ্কুচিত-মোড়ানো (ডিফল্ট প্রদর্শন) এর সাথে ডান-প্রান্তিককরণ
  • বাম-সারিবদ্ধ বৈজ্ঞানিক স্বরলিপি সহ মোট n অঙ্ক এবং মি অক্ষর
  • (বাম / কেন্দ্র / ডান) সহ সঙ্কুচিত বাক্সযুক্ত প্রদর্শন - (শীর্ষ / মধ্য / নীচে) প্রান্তিককরণ (নীচে, 69 টি অক্ষর)

সর্বাধিক ভার্বোস তবে সবচেয়ে বহুমুখী এবং উদাহরণ হিসাবে আউটপুট উত্পাদন করতে সক্ষম একমাত্র হ'ল 8!:2ফর্ম্যাটিং বিদেশী, এটি তার বাম আর্গুমেন্ট হিসাবে একটি বিন্যাসের স্ট্রিং নেয়। এছাড়াও 67 টি অক্ষর :

'l3.'8!:2(7$0,:7$0 1){"0 1 |:>v;v-~7 7{.0,.0,3+/\"1]3+/\v=.1+?7 7$9

এখানে বক্সযুক্ত ফর্ম্যাটটি রয়েছে:

 0 0":<"0(7$0,:7$0 1){"0 1 |:>v;v-~7 7{.0,.0,3+/\"1]3+/\v=.1+?7 7$9

 ┌─┬──┬─┬──┬─┬──┬─┐
 │2│6 │5│7 │5│7 │6│
 ├─┼──┼─┼──┼─┼──┼─┤
 │8│40│4│35│9│49│6│
 ├─┼──┼─┼──┼─┼──┼─┤ 
 │6│7 │2│2 │1│9 │6│
 ├─┼──┼─┼──┼─┼──┼─┤
 │8│41│9│35│3│45│7│
 ├─┼──┼─┼──┼─┼──┼─┤
 │3│1 │5│6 │7│8 │4│
 ├─┼──┼─┼──┼─┼──┼─┤
 │7│37│4│45│6│48│8│
 ├─┼──┼─┼──┼─┼──┼─┤
 │8│4 │5│4 │8│1 │6│
 └─┴──┴─┴──┴─┴──┴─┘

1

পার্ল, 117 টি অক্ষর

print$_,++$j%7?$":$/for map{++$i/7&$i%7&1?
eval join"+",@x[map{$i+$_,$i-$_}1,6,7,8]:" $_"}@x=map{1+int rand 9}$i--..48

এটি সেই পার্ল স্ক্রিপ্টগুলির মধ্যে একটি যেখানে লুপগুলির জন্য একটি ছাড়া সমস্তগুলি mapকলগুলিতে বিপর্যস্ত হয়ে পড়েছে যাতে একক বিবৃতিতে সবকিছু করা যায়। গ্লোবাল ভেরিয়েবলগুলি এর মধ্যে কিছু গুরুত্বপূর্ণ উপস্থিতি তৈরি করে। আমি অনুমান করি যে আমি এখানে যা বলতে চাইছি তা হল, এই প্রোগ্রামটি কিছুটা স্থূল।

অপেক্ষা করুন, এটি আরও খারাপ হয়: স্ক্রিপ্টে একটি জানা বাগ আছে! এটিতে ট্রিগার হওয়ার এক-মিলিয়ন মিলিয়ন সম্ভাবনা কম রয়েছে, যদিও আমি এখনও এটি ঠিক করতে পারিনি।


আমাদের ধরে রাখবেন না, বাগ কী?

বোনাস প্রথম ব্যক্তির দিকে ইঙ্গিত করে যে এটি স্পট করে!
ব্রেডবক্স

1

ম্যাথামেটিকাল , 106/100

আমি ssch এর কোড এর সাথে খুব সাদৃশ্যপূর্ণ কিছু নিয়ে এসেছি, এটি দেখার আগে। আমি তার ব্যবহার ধারনা করছি Column। কেবলমাত্র ASCII সহ, 106 :

s=#-1;;#+1&
a=8~RandomInteger~{7,7}+1
a[[##]]=a[[s@#,s@#2]]~Total~2-a[[##]];&@@@{2,4,6}~Tuples~2
Column/@a

ইউনিকোড অক্ষর (ssch দ্বারা ব্যবহৃত হিসাবে), 100 :

s=#-1;;#+1&
a=8~RandomInteger~{7,7}+1
a〚##〛=a〚s@#,s@#2〛~Total~2-a〚##〛;&@@@{2,4,6}~Tuples~2
Column/@a

1

এক্সেল ভিবিএ, 74 বাইট

VBE অবিলম্বে ফাংশন যা ফলাফল [B2:H9]

[B2:H9]="=IF(ISODD(ROW()*COLUMN()),SUM(A1:C1,A2,C2,A3:C3),INT(RAND()*8)+1)

নমুনা আউটপুট

এখানে চিত্র বর্ণনা লিখুন


1

পাওয়ারশেল, 149 148 বাইট

-1 বাইট @ অ্যাডমবার্কবার্ককে ধন্যবাদ। এটি জোশ!

$i=-1
($a=(,1*8+0,1*3)*3+,1*7|%{$_*(1+(Random 9))})|?{++$i;!$_}|%{6..8+1|%{$_,-$_}|%{$a[$i]+=$a[$i+$_]}}
-join($a|%{if(!(++$i%7)){"
"};'{0,3}'-f$_})

ব্যাখ্যা:

$i=-1                       # let $i store -1
($a=                        # let $a is array of random numbers with zero holes
    (,1*8+0,1*3)*3+,1*7|    # the one-dimension array equals
                            # 1 1 1 1 1 1 1
                            # 1 0 1 0 1 0 1
                            # 1 1 1 1 1 1 1
                            # 1 0 1 0 1 0 1
                            # 1 1 1 1 1 1 1
                            # 1 0 1 0 1 0 1
                            # 1 1 1 1 1 1 1
    %{                      # for each element
        $_*(1+(Random 9))   # multiply 0 or 1 element to random digit from 1 to 9
    }                       # now $a stores values like (* is a random digit from 1 to 9)
                            # * * * * * * *
                            # * 0 * 0 * 0 *
                            # * * * * * * *
                            # * 0 * 0 * 0 *
                            # * * * * * * *
                            # * 0 * 0 * 0 *
                            # * * * * * * *
)|?{++$i;!$_                # calc index $i and passthru values == 0 only
}|%{                        # for each zero value cell with index $i
    6..8+1|%{               # offsets for the surrounding cells
                            #  .  .  .
                            #  .  x +1
                            # +6 +7 +8  
        $_,-$_              # add the mirror offsets 
                            # -8 -7 -6
                            # -1  x +1
                            # +6 +7 +8  
    }|%{                    # for each offset 
        $a[$i]+=$a[$i+$_]   # add surrounding values to the cell
    }
}
                            # display the $a
-join(
    $a|%{                   # for each value of $a
        if(!(++$i%7)){"`n"} # line break for each 7 cells
        '{0,3}'-f$_         # formatted value of $a with width = 3 char and align right
    }
)                           # join all values to string

1
আপনি $a($a=(,1*8+0,1*3)*3+,1*7|%{$_*(1+(Random 9))})|?{++$i;!$_}|%{6..8+1|%{$_,-$_}|%{$a[$i]+=$a[$i+$_]}}
পেরেনসে

না। এটি কাজ করে না। অ্যারে অবশ্যই পূর্বে পপুলেটেড হবে $a[$i+$_]। সুতরাং এখানে দুটি পদক্ষেপ। আমি একটি পাইপ encapsulate করার চেষ্টা করেছি। :)
mazzy

1
আপনি যদি অ্যাসাইনমেন্টের আশেপাশে প্যারেনস না রাখেন তবে এটি কাজ করে না। সহ ($a=(,1*8+0,1*3)*3+,1*7|%{$_*(1+(Random 9))}), $aপরবর্তী পাইপলাইন দৃষ্টান্তের আগে সম্পূর্ণরূপে জনবহুল। এটি কাজ করা উচিত (কমপক্ষে, এটি আমার জন্য কাজ করে)।
অ্যাডমবর্কবার্ক

0

গণিত 142 151 172 179

কোড

z = (m = RandomInteger[{1, 9}, {7, 7}]; s = SparseArray; o = OddQ; e = EvenQ; i = {1, 1, 1};
(m + ArrayPad[ListCorrelate[{i, i, i}, m] s[{{i_, j_} /; o@i \[And] o@j -> 1}, {5, 5}], 1]
- 2 m s[{{i_, j_} /; e@i \[And] e@j -> 1}, {7, 7}]) // Grid)

ব্যবহার

z

M8


আপনি 0s আছে; বিধিগুলি 1-9 বলে
ডুরকনব

ধন্যবাদ। আমি তথ্য এবং ছবিগুলি সংশোধন করেছি। ফাংশনগুলি অপরিবর্তিত রয়েছে।
ডেভিডসি

এছাড়াও, প্রশ্নগুলিতে উল্লিখিত হিসাবে সংখ্যাগুলি সারিবদ্ধ করা হয়নি।
ডুরকনব

গণিতের কথায় কথায় (বা আরও সঠিকভাবে বড় শব্দ ব্যবহারে জোর দেওয়া) স্পষ্ট হয়ে ওঠে।
ডেভিডসি

0

জুলিয়া 0.6 , 127 (89) বাইট

x=rand(1:9,7,7);[x[i,j]=sum(!(0==k==l)*x[i+k,j+l]for k=-1:1,l=-1:1)for i=2:2:7,j=2:2:7]
Base.showarray(STDOUT,x,1<1;header=1<1)

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

নেটিভ ডিসপ্লে ব্যবহার করে 89 বাইট, যা অতিরিক্ত লাইনগুলি মুদ্রণ করা যায় যদি তা গ্রহণযোগ্য হতে পারে:

7×7 Array{Int64,2}:
6   6  8   2  3   2  3
7  44  5  33  4  23  5
3   8  1   9  1   3  2
4  41  2  37  5  22  2
7   8  8   8  3   4  2
9  53  6  44  7  36  3
7   7  1   9  2   6  9

0

জাভা 10, 262 260 248 239 বাইট

v->{int a[][]=new int[7][7],i=49,j,k;for(;i-->0;)a[i/7][i%7]+=Math.random()*9+1;var r="";for(;++i<7;r+="\n")for(j=0;j<7;r+=(k=a[i][j])>9|j++%2<1?k+" ":k+"  ")if(i*j%2>0)for(a[i][j]=k=0;k<9;k++)a[i][j]+=k!=4?a[i+k/3-1][j+k%3-1]:0;return r;}

-12 বাইটস @ সিলিংক্যাটকে ধন্যবাদ ।

ব্যাখ্যা:

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

v->{                        // Method with empty unused parameter and String return-type
  int a[][]=new int[7][7],  //  Integer-matrix with 7x7 zeroes
      i=49,j,k;             //  Index integers (`i` starting at 49)
  for(;i-->0;)              //  Loop `i` in the range (49, 0]:
    a[i/7][j%7]+=Math.random()*9+1;
                            //   Fill the current cell with a random 1..9 integer
  var r="";                 //  Result-String, starting empty
  for(;++i<7;               //  Loop `i` in the range [0, 7):
      r+="\n")              //    After every iteration: append a new-line to the result
    for(j=0;j<7;            //   Inner loop `j` in the range [0, 7):
        r+=                 //     After every iteration: append the result-String with:
           (k=a[i][j])>9    //      If the current number has 2 digits,
           |j++%2<1?        //      or it's an even column (indices 0/2/4/6)
            k+" "           //       Append the current number appended with one space
           :                //      Else:
            k+"  ")         //       Append the current number appended with two spaces
      if(i*j%2>1)           //    If both indexes `i` and `j` are odd
        for(a[i][j]=k=0;    //     Reset both the current item and index `k` to 0
            k<9;k++)        //     Inner loop `k` in the range [0, 9):
          a[i][j]+=         //      Sum the item at location `i,j` with:
           k!=4?            //       If `k` is not 4 (the current item itself)
            a[i+k/3-1][j+k%3-1]
                            //        Sum it with the numbers surrounding it
           :                //       Else:
            0;              //        Leave it the same by adding 0
  return r;}                //  Return the result-String

ধন্যবাদ! এবং আমি এর varপরিবর্তে Stringএবং +=Math.random()*9+1;পরিবর্তে আরও কয়েকটি বাইট সংরক্ষণ করতে সক্ষম হয়েছি =(int)(Math.random()*9+1);। আমার সমস্ত পুরানো উত্তরগুলি দেখার জন্য এটি আসলে আপনার পক্ষে বেশ কার্যকর, হাহা! : ডি
কেভিন ক্রুইজসেন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.