ওজনের এক গাদা


13

চ্যালেঞ্জ:

আপনাকে ইনপুট হিসাবে একটি গাদা ওজনের একটি ASCII চিত্র দেওয়া হবে এবং অবশ্যই গাদাটির সম্মিলিত ওজন আউটপুট করতে হবে।

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

বিন্যাস:

5 , 5, 10, 20, 20 পাসেরি (বা অন্য কোনও স্বেচ্ছাচারী ইউনিট) ওজনের বিভিন্ন ওজন রয়েছে ।

ওজন আরোহী ক্রমে এইরকম দেখাচ্ছে:

1:   __
    |__|

2:   ______
    |______|

5:   ______
    |      |
    |______|

10:  ______________
    |              |
    |______________|

20:  ____________________
    |                    |
    |____________________|

ওজনগুলি সমন্বিতভাবে স্থাপন করা হবে (উদাহরণস্বরূপ চিত্রের মতো), অগত্যা বাছাই করা ক্রমে নয়। ওজনগুলি সীমানা ভাগ করে নেবে, যেখানে প্রযোজ্য:

পরীক্ষার কেস:

আপনি পরীক্ষার ক্ষেত্রেও একক সমস্ত ওজন ব্যবহার করতে পারেন।

   __
 _|__|_
|______|
|      |
|______|
1 + 2 + 5 = 8

 ____________________
|                    |
|____________________|
   |              |
   |______________|
        _|__|_
       |______|
       |      |
       |______|          
20 + 10 + 1 + 2 + 5 = 38 

 ______
|______|
|______|
|______|
|______|
2 + 2 + 2 + 2 = 8

অতিরিক্ত নিয়ম:

  • আপনি পারে না অতিরিক্ত নেতৃস্থানীয় স্পেস অনুমান। বাম দিকের সর্বত্র সবচেয়ে বড় ওজন হবে।
  • আপনি অনুমানযোগ্য স্থান এবং নিউলাইনগুলি ধরে নিতে পারেন।
  • আপনি ধরে নিতে পারেন সর্বোচ্চ 10 ওজন থাকবে
  • আপনি একটি formatচ্ছিক বিন্যাসে ইনপুট নিতে পারেন, তবে আপনি অন্য কোনও কিছুর দ্বারা ব্যবহৃত অক্ষরগুলি প্রতিস্থাপন করতে পারবেন না

এটি তাই প্রতিটি ভাষার বাইটের মধ্যে সংক্ষিপ্ততম কোডটি জয়ী। ব্যাখ্যা সর্বদা হিসাবে উত্সাহিত হয়।


আপনার চ্যালেঞ্জ আমাকে লিখতে অনুপ্রাণিত এই এক । কোন টিপস প্রশংসা করা হয়!
tgrass12

উত্তর:


7

জেলি ,  24  23 বাইট

ḟ⁶Ỵẹ€”|IFṚ’œṗ$Ḅ:3“ÇÞ‘yS

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

কিভাবে?

ওজনগুলি তাদের প্রস্থ এবং উচ্চতা দ্বারা চিহ্নিত করা যেতে পারে। লাইনের |অক্ষরের মধ্যবর্তী দূরত্ব দেখে প্রস্থগুলি পরিমাপ করা যেতে পারে । যদি আমরা প্রথমে সমস্ত শূন্যস্থান সরিয়ে ফেলি তবে উচ্চতার সেই দুটি ওজনগুলি একটির পরিমাপ করা প্রস্থের সাথে এই জাতীয় রেখাকে অবদান রাখবে।

বিভিন্ন ওজনের প্রস্থ 3, 7, 7, 15, 21( 1, 2, 5, 10, 20যথাক্রমে ওজনের জন্য ) থাকে। 1উচ্চতা দুইয়ের জন্য আমরা [3],[7],[7,1],[15,1],[21,1]এগুলি বাইনারি থেকে রূপান্তরিত করতে পাই এর জন্য একটি অগ্রগতি যুক্ত করা 3,7,15,31,43, তিনটি দিয়ে ভাগ করে পূর্ণসংখ্যা আমাদের দেয় 1,2,5,10,14যা 14প্রতিস্থাপনের প্রয়োজন ছাড়া ওজন 20

ḟ⁶Ỵẹ€”|IFṚ’œṗ$Ḅ:3“ÇÞ‘yS - Link: list of characters    e.g. <example 2>
 ⁶                      - literal space character
ḟ                       - filter discard
  Ỵ                     - split at new lines
     ”|                 - literal pipe character
   ẹ€                   - get indices for €ach             [[],[1,2],[1,22],[1,2],[1,16],[2,5],[1,8],[1,2],[1,8]]
       I                - incremental differences          [[],[1],[21],[1],[15],[3],[7],[1],[7]]
        F               - flatten                          [1,21,1,15,3,7,1,7]
         Ṛ              - reverse                          [7,1,7,3,15,1,21,1]
             $          - last two links as a monad:
          ’             -   decrement                     [6,0,6,2,14,0,20,0]
           œṗ           -   partition at truthy indices   [[],[7,1],[7],[3],[15,1],[21,1]]
              Ḅ         - convert from binary             [0,15,7,3,31,43]
               :3       - integer divide by three         [0,5,2,1,10,14]
                 “ÇÞ‘   - code-page-indices               [14,20]
                     y  - translate                       [0,5,2,1,10,20]
                      S - sum                             38

বিকল্পভাবে এর মাপা প্রস্থ প্রতিস্থাপন 21সঙ্গে 30রূপান্তর করার পূর্বে ব্যবহার “ßœ‘y:

ḟ⁶Ỵẹ€”|IF“ßœ‘yṚ’œṗ$Ḅ:3S

4

পাইথন 2 , 77 বাইট

lambda x:sum(i/21*x.count('|'+i%21*' _'[i<50]+'|')for i in[23,48,69,224,440])

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

[i/21, i%21, ' _'[i<50] for i in [23,48,69,224,440]]নিম্নলিখিত [1, 2, '_'], [2, 6, '_'], [3, 6, ' '], [10, 14, ' '], [20, 20, ' ']ওজনের তিনটি উত্পন্ন করবে যা ওজন, দৈর্ঘ্য এবং প্রতিটি ওজনের ভিত্তিতে চরিত্রকে উপস্থাপন করে যা প্রতিটি ওজনের অনন্য একক-লাইন উপস্থাপনা করতে ব্যবহৃত হবে।
যেহেতু তৃতীয় ওজন ২ য় ওভারল্যাপ হয়ে যাবে, তাই আমি এর ভিত্তিটি তার দেহের সাথে প্রতিস্থাপন করব ( _-> ) এবং মান হ্রাস করে 3(এটি বেসকে 2এবং দেহকে যেমন গণনা করবে 3, ফলস্বরূপ 5)


4

রেটিনা 0.8.2 , 60 বাইট

T`|`!
!__!
1
!_{6}!
11
! {6}!
3$*
!.{14}!
5$*
!.{20}!
10$*
1

এটি অনলাইন চেষ্টা করুন! ব্যাখ্যা: মিলগুলি স্বাচ্ছন্দ্যের জন্য গুলিগুলি |s এর সাথে প্রতিস্থাপন করা হয় !, তারপরে ওজনগুলি অ্যানারি এবং মোটে রূপান্তরিত হয়। একমাত্র আকর্ষণীয় অংশটি হ'ল 5ওজনকে একটি 2এবং 3ওজনের যোগফল হিসাবে বিবেচনা করা হয় , 10এবং 20ওজনগুলি অর্ধ ওজনের মাত্র দুটি লাইন।



2

পাইথন 3 , 76 বাইট

lambda t:sum([1,2,3,5,5,9,11][len(x)//4+(x<'_')]for x in t.split('|')[1::2])

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

কিভাবে?

sum([1,2,3,5,5,9,11][len(x)//4+(x<'_')]for x in t.split('|')[1::2])
                                                t.split('|')         - split ascii art into pieces
                                                            [1::2])  - weights are at odd indexes
                                       for x in                      - iterates over the weights
                     len(x)//4                                       - map widths to 0,1,3,5,7
                              +(x<'_')                               - add 1 if the first row of 2-row weight
    [1,2,3,5,5,9,11][                 ]                              - value of each part of a weight
sum(                                                              )  - add 'em all up

1

আমি নিশ্চিত কিছু উন্নতি করতে হবে, তবে এই মুহূর্তে আমার যা আছে:

গ্রোভী, 131 বাইট

def f(s){s.split('\n').sum{n=0;[2:1,6:2,14:5,20:10].each{k,v->if(it==~".*\\|[ _]{$k}\\|.*"){n=v+(!it.contains('_')&&k==6?1:0)}};n}}

ইনপুট রূপান্তর করে Stringএকটি মধ্যে Collection<String>এবং তারপর প্রতিটি লাইনে এর জন্য ফলাফল অঙ্কের মোট জন্য। একটি ব্যবহার Mapযেখানে মূল পাইপ অক্ষরের মধ্যে মধ্যে স্পেস বা আন্ডারস্কোর সংখ্যা এবং মান সংশ্লিষ্ট Passerees পরিমাণ। লাইনটি কোনও উল্লেখযোগ্য প্যাটার্নের সাথে মেলে কিনা তা নির্ধারণ করার জন্য কীটিকে রেজিজেটে প্লাগ ইন করা হয়েছে। একটি সতর্কতা হ'ল পাইপগুলির মধ্যে সাবস্ট্রিংয়ের দৈর্ঘ্য 6 এবং ফাঁকা স্থানগুলি (আন্ডারস্কোরের বিপরীতে) এর সমন্বয়ে তৈরি হওয়া ক্ষেত্রে 1 যুক্ত করার জন্য তিনটি স্তর ary যদি কোনও প্যাটার্ন মেলে না তবে লাইনটির মান 0 হয়।


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