একটি তালিকার "পুনরাবৃত্ত আকার" সন্ধান করুন


20

একটি তালিকা "আবদ্ধ আকার" সন্ধান দ্বারা অনুপ্রাণিত ।

নির্ধারণ Recursive আয়তন RS, তার দৈর্ঘ্য কোন তালিকা সম্বলিত একটি তালিকার (আইটেম সংখ্যা উপস্থিত রয়েছে) এবং তার দৈর্ঘ্য এর সমষ্টি এবং যারা তালিকার Recursive সাইজ কোন তালিকা সম্বলিত একটি তালিকার Recursive সাইজ।

চ্যালেঞ্জ

এমন একটি প্রোগ্রাম বা ফাংশন লিখুন যা প্রদত্ত তালিকার পুনরাবৃত্ত আকারকে যতটা সম্ভব কম বাইটে আউটপুট করে।

ইনপুটটি একটি তালিকা এবং এতে সংখ্যা, স্ট্রিং (যদি আপনার ভাষা থাকে তবে) এবং অনুরূপ তালিকা থাকতে পারে।


উদাহরণ স্বরূপ:

RS([]) = 0

RS([[]]) = 1

RS([4, 5, 6]) = 3
RS(["four", "five", "six"]) = 3
RS(["[[[[]]]]", "[][][][][]", "][][[[]]][]["]) = 3

RS([[4, 5, 6]]) = 4
RS([["four", "five", "six"]]) = 4
RS([["[[[[]]]]", "[][][][][]", "][][[[]]][]["]]) = 4

RS([[4], [5], [6]]) = 6
RS([["four"], ["five"], ["six"]]) = 6
RS([["[[[[]]]]"], ["[][][][][]"], ["][][[[]]][]["]]) = 6

RS([[[[[[[[[]]]]]]]]]) = 8

RS([[],[],[],[],[],[],[],[]]) = 8

RS([[],[],[[]],[[[[]]]]]) = 8

RS([0,[-1],[2.3,-4.3],[5,[6]],[7,[8,9,[10,11,[12,13,14]]]]]) = 22

মনে রাখবেন যে যদি আপনার ভাষার কোনও স্ট্রিং না থাকে তবে তার মধ্যে অক্ষরগুলির তালিকা থাকে তবে "strings"উপরে বর্ণিত উদাহরণগুলি আসলে অক্ষরের তালিকা হতে পারে এবং এর বৃহত্তর ফলাফল হতে পারে। উদাহরণ হিসাবে:

RS([['f','o','u','r'], ['f','i','v','e'], ['s','i','x']]) = 14

এটি , তাই বাইটের মধ্যে সংক্ষিপ্ত উত্তর; কোনও মজাদার-ব্যবসা নয়, বরাবরের মতো।

একটি তালিকাবিহীন ইনপুট যে কোনও আউটপুট উত্পাদন করতে পারে।
I / O যথারীতি নমনীয়



উপাদানগুলি স্ট্রিং, সংখ্যা এবং পুনরাবৃত্ত তালিকা হবে?
xnor

দ্রষ্টব্য: কিছু আলোচনার পরে তালিকাগুলির বিষয়বস্তু সীমাবদ্ধ। এটি প্রতিফলিত করার জন্য আমি প্রশ্নটি সম্পাদনা করেছি। ইনপুটটির জন্য @ xnor ধন্যবাদ!
জোনাথন অ্যালান

2
আমি মনে করি স্ট্রিংগুলির জন্য অ্যাকাউন্ট না করেই এটি আরও ভাল চ্যালেঞ্জ। এটি কেবল কয়েকটি ভাষায় বাইটস যুক্ত করে আইএমও
কনর ও'ব্রায়েন

@ কনরও ব্রায়েন বা তারা উত্তরকে আমার কাছে তৈরি করা উচিত ছিল যদি তারা স্ট্রিংটিকে একটি তালিকা হিসাবে বিবেচনা করতে চায় বা না করে। দুর্ভাগ্যক্রমে আমি সম্প্রদায়কে উভয়কেই বিশেষভাবে জিজ্ঞাসা করেছি "আমার কি কোনও যুক্ত হওয়া উচিত?", এবং "সংজ্ঞাটির কোনও ব্যাখ্যা দরকার কি?" এবং নয় দিন ধরে স্যান্ডবক্সে কোনও সাড়া পেল না ... এবং এখন আমি মনে করি যে এই জাতীয় প্রশ্নটি একটি নকল হবে?
জনাথন অ্যালান

উত্তর:


5

জেলি , 8 বাইট

߀-ŒḊ?‘S

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

কিভাবে এটা কাজ করে

߀-ŒḊ?‘S  Main link. Argument: x

   ŒḊ?    If x has non-zero depth:
߀          Recursively map the main link over its elements.
  -         Else, yield -1.
      ‘   Increment all integers in the result.
       S  Compute the sum of the result.
          If x is an array, incrementing before adding is equivalent to computing
          the sum of the elements and the length.
          If x is an integer/character, incrementing -1 yields 0, as desired.

13

পাইথন, 42 বাইট

f=lambda x:x*0==[]and len(x)+sum(map(f,x))

একটি তালিকাবিহীন, আউটপুট 0 একটি তালিকার জন্য, তার দৈর্ঘ্য এবং তার উপাদানগুলির জন্য পুনরাবৃত্তির ফলাফলগুলির যোগফল আউটপুট করুন।

পাইথন 2 ক্রমানুসারে তালিকার সংখ্যার উপরে এবং নীচে স্ট্রিংগুলি পড়ে, প্রয়োজনীয় []<=x<''। পরিবর্তে, আমরা পরীক্ষা করি x*0==[], যেখানে 0কোনও সংখ্যার ''জন্য বা স্ট্রিংয়ের ফলাফল।


6

জাভাস্ক্রিপ্ট (ES6), 39 37 বাইট

@ Edc65 ধন্যবাদ 2 বাইট সংরক্ষণ করা

f=a=>a.map&&a.map(x=>a-=~f(x),a=0)&&a

38 বাইট:f=a=>a.map?a.reduce((s,x)=>s+f(x),0):0
শেঠি

@ শেঠি কি কোনও ইনপুট দিয়ে 0 ফেরত দেবে না? আপনাকে 1সেখানে কোথাও প্রবেশ করতে হবে।
ETH প্রোডাকশনগুলি

1
37: f=a=>a.map&&a.map(x=>a-=~f(x),a=0)&&a-=~এর চেয়ে 1 চর কম +=1+এবং, বুলিয়ানকে পূর্ণসংখ্যায় রূপান্তরিত করে, এটি অন্য একটি চরিত্রকে কেটে দেয়। পুনঃব্যবহার aবিশ্বব্যাপী পরিবর্তনশীল এড়াতেt
edc65

@ edc65 ধন্যবাদ, দুর্দান্ত!
ইটিএইচ প্রডাকশনগুলি

5

গণিত, 20 বাইট

Length@Level[#,∞]&

বেনামে ফাংশন। ইনপুট হিসাবে একটি অভিব্যক্তি নেয় এবং আউটপুট হিসাবে একটি নম্বর প্রদান। ইউনিকোড চরিত্রটি হ'ল ইউ + 221E ইনফিনিটি \[Infinity]Level[#,∞]ইনপুটটির সুপ্রেসপ্রেশনের একটি তালিকা দেয় এবং Length@সেগুলি গণনা করে।


পরিস্ফুটন! স্ল্যাম আমার উত্তর ডান। তবে আমি নতুন কিছু শিখলাম :)
গ্রেগ মার্টিন

5

গণিত, 14 বাইট

LeafCount@#-1&

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


4

পার্ল, 34 বাইট

একটি পুনরাবৃত্ত ফাংশন! হ্যাঁ, পার্লের কেবল রেইগেক্সই নেই তবে এর ফাংশনগুলিও রয়েছে!

sub f{@_+f(map ref?@$_:(),@_)if@_}

আপনি যদি এটি পরীক্ষা করতে চান তবে আপনি এমন কিছু চালাতে পারেন:

perl -pE 'sub f{@_+f(map ref?@$_:(),@_)if@_}$_=f@{+eval}' <<< '[["four"], ["five"], ["six"]]'

3

গণিত, 32 বাইট

Length@#+Tr[#0/@#~Select~ListQ]&

নামবিহীন পুনরাবৃত্তি ফাংশন। সংক্ষিপ্তসার ইনপুটটির #0/@#~Select~ListQপ্রতিটি উপাদানের উপরে ফাংশনটিকে আবার কল করে যা একটি তালিকায় রয়েছে এবং Trসেই মানগুলি যোগ করে। ভাগ্যক্রমে ম্যাথমেটিকা ​​খালি তালিকার দৈর্ঘ্য গ্রহণ করে খালি তালিকা থেকে যোগ্যতার উপাদান অনুসন্ধান করছে, সুতরাং কোনও বেস কেসের প্রয়োজন নেই case


2

হাস্কেল, 52 বাইট

data L a=E a|N[L a]
r(N n)=1+sum(r<$>n)
r _=1
pred.r

ব্যবহারের উদাহরণ:

*Main> pred.r $ N[E 0,N[E(-1)],N[E 2.3,E(-4.3)],N[E 5,N[E 6]],N[E 7,N[E 8,E 9,N[E 10,E 11,N[E 12,E 13,E 14]]]]] 
22

হাস্কেল মিশ্র তালিকাগুলি সমর্থন করে না (উদাহরণস্বরূপ ইন্টার এবং তালিকার তালিকা), সুতরাং আমি একটি কাস্টম তালিকার ধরণের সাথে যাই Lযা হয় হয় কোনও ধরণের একটি (-> E a) এর উপাদান বা অন্যান্য এলএস (-> N[L a]) এর একটি তালিকা । আরএস গণনা করা হচ্ছে একটি সহজ পুনরাবৃত্তির যেখানে একটি Eসংখ্যা 1এবং একটি Nএক প্লাস তার উপাদানের রিকার্সিভ আকারের সমষ্টি। পুরো যোগফলটি 1 দ্বারা বন্ধ রয়েছে, তাই আমি এটির মাধ্যমে বিয়োগ করি pred

পার্শ্ব দ্রষ্টব্য: অ্যালগোরিদমের জন্য উপাদানগুলির সঠিক প্রকারগুলি এবং মানগুলি গুরুত্বপূর্ণ নয়, তাই আমরা পলিমারফিজমটি কেবল বিমূর্ত উপাদানগুলির সাথে একটি চুক্তি সরিয়ে নিয়ে যেতে পারি data L=E|N[L]


2

ফ্যাক্টর, 105 বাইট

পুনরাবৃত্তি ফাংশন জি।

: g ( o -- l ) [ dup [ sequence? ] [ string? not ] bi and [ [ g ] map sum 1 + ] [ drop 1 ] if ] map sum ;

অবহেলিত (কিন্ডা):

: g ( o -- l ) 
[ dup 
  [ sequence? ] 
  [ string? not ] 
  bi and 
  [ [ g ] map sum 1 + ] 
  [ drop 1 ] 
  if 
] map sum ;

আপনি দেখতে পাবেন যে কোনও কল নেই lengthকারণ দৈর্ঘ্য বিল্টিন ব্যবহার না করে এটি drop 1স্ট্রিং এবং অ-সিকোয়েন্সগুলির মাধ্যমে প্রয়োগ করা হয়েছে।


2

গণিত, 18 বাইট

(c=-1;++c&//@#;c)&

তবুও আরেকটি গণিতের পন্থা। অন্তর্নির্মিতটি ব্যবহার করার মতো ছোট নয় LeafCountতবে এখনও মোটামুটি সংক্ষিপ্ত। এটি MapAllঅপারেটরটির ব্যবহার করে //@যা অভিব্যক্তির প্রতিটি নোডে একটি ফাংশনকে কল করে এবং আমরা সেই ফাংশনটি কাউন্টারকে বাড়ানোর জন্য ব্যবহার করি c। যেমনটি হয় LeafCount, এটি আমাদের প্রয়োজনের তুলনায় আরও একটি দেয়, কারণ এটি বাহ্যিক তালিকার শীর্ষকেও গণনা করে, তাই আমরা কাউন্টারটি শুরু করি -1


2

সি # (ভিজ্যুয়াল সি # ইন্টারেক্টিভ সংকলক) , 50 বাইট

int f(Array a)=>a.Length+a.OfType<Array>().Sum(f);

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

পূর্বে জমা দেওয়া জাভা উত্তরের মতো একই কৌশলটি ব্যবহার করে তবে উত্তরের দৈর্ঘ্য হ্রাস করার জন্য লিনকউকে সহায়তা করে।

ব্যাখ্যা:

// f is a method that a accepts
// an array of any underlying type
int f(Array a)=>
  // include the length of the
  // current array in the total
  a.Length+
  // filter the current list to elements
  // that are also arrays
  a.OfType<Array>()
    // recursively call f on each child
    // array and add to cumulative total
    .Sum(f);

2

05 এ বি 1 ই (উত্তরাধিকার), 22 17 বাইট

"ε¼D¸D˜Êi®.V"©.V¾

এটি অনলাইনে চেষ্টা করুন বা সমস্ত পরীক্ষার কেস যাচাই করুন

ব্যাখ্যা:

এই চ্যালেঞ্জটি 05AB1E এ কাটিয়ে উঠতে একাধিক চ্যালেঞ্জ তৈরি করেছে:

  1. যদিও এলিএক্সির পুনর্লিখন ( λ) এর পর থেকে 05AB1E এর পুনরাবৃত্ত ফাংশন রয়েছে , এটি কেবল পূর্ণসংখ্যার ক্রমগুলির জন্য কার্যকর। 05AB1E পুনরাবৃত্তির ক্রিয়াটির উদাহরণ হিসাবে এখানে আমার একটি উত্তর।তার কারণে, আমাকে পুনরাবৃত্ত কলগুলি করতে একটি বিকল্প খুঁজতে হয়েছিল, যা আমি কোডের একটি অংশ একটি স্ট্রিংয়ে রেখে দিয়েছিলাম এবং সেই স্ট্রিংটি 05AB1E কোড হিসাবে পুনরাবৃত্তভাবে কার্যকর করেছিলাম।
  2. এছাড়া একটি নয় isList05AB1E কমান্ড, তাই আমি একটি তালিকা মধ্যে মোড়ানো ব্যবহার, গভীর সমরূপতার এই চেক করতে, এবং সমতার জন্য চেক কিছু সমাধান নীচে উপস্থিত ব্যবহার ছিল।
  3. এবং তৃতীয়, একটি বহুমাত্রিক তালিকার মাত্র এক স্তরের জন্য সমতল নেই isn't সমতল ফাংশন ˜একটি গভীর সমতল যা সমস্ত স্তরকে সরিয়ে দেয় এবং বহু-মাত্রিক তালিকাটিকে সমস্ত অভ্যন্তরীণ-সর্বাধিক মানগুলির সাথে একক তালিকা তৈরি করে। (অর্থাত্ [[1,2],[[[3]],4]]হয়ে ওঠে [1,2,3,4])।

উপরের তিনটি বিষয়কেই কাটিয়ে উঠতে আমি শীর্ষে কোড দিয়ে শেষ করেছি। এটি তিনটি প্রধান অংশে বিভক্ত। প্রথমে আমাদের নিম্নলিখিতগুলি রয়েছে:

"..."        # Create a string with 05AB1E code
     ©       # Save this string in the register (without popping)
      .V     # Execute the string as 05AB1E code

স্ট্রিংটিতে নিম্নলিখিত কোড রয়েছে:

ε            # Map each value in the given list by:
             # (this uses the input-list implicitly with the initial call)
 ¼           #  Increase the counter_variable by 1
 D           #  Duplicate the map-value
             #   i.e. STACK "A" becomes "A","A"
             #   i.e. STACK [["B","C"]] becomes [["B","C"]],[["B","C"]]
  ¸          #  Wrap it into a list
             #   i.e. "A" → ["A"]
             #   i.e. [["B","C"]] → [[["B","C"]]]
   D         #  Duplicate that again
             #   i.e. STACK "A",["A"] becomes "A",["A"],["A"]
             #   i.e. STACK [["B","C"]],[[["B","C"]]]
             #    becomes [["B","C"]],[[["B","C"]]],[[["B","C"]]]
    ˜        #  Flatten it
             #   i.e. ["A"] → ["A"]
             #   i.e. [[["B","C"]]] → ["B","C"]
     Ê       #  Check if the wrapped and wrapped+flattened lists are NOT equal
             #   i.e. ["A"] and ["A"] → 0 (falsey)
             #   i.e. [[["B","C"]]] and ["B","C"] → 1 (truthy)
      i      #  If they are:
       ®     #   Push the string from the register
        .V   #   Execute it as 05AB1E code
             #   (this is basically our recursive call, mapping the current value
             #    we duplicated initially again)

ফোরচ-লুপের পরিবর্তে একটি মানচিত্র ব্যবহৃত হয়, কারণ মানচিত্রে একটি অন্তর্নিহিত রয়েছে yএবং একটি ভবিষ্যত্-লুপের একটি স্পষ্ট প্রয়োজন ycounter_variableযদিও আমরা কেবল যত্নশীল ।

এবং পরিশেষে, সমস্ত মানচিত্র এবং অভ্যন্তরীণ মানচিত্রগুলি সম্পন্ন হওয়ার পরে, আমরা করব:

¾           # Push the counter_variable (which is output implicitly as result)


1

সি, 174 167 152 বাইট

পুনরাবৃত্তি ফাংশন f, যা মেমরি ফাঁস করে ( 152 ):

#include"object.h"
size_t f(array_t*a){size_t t=0,i=0;for(;i<array_length(a);i++){object_t*o=array_get_copy(a,i,0);t+=o->type==6?f(o->ary):1;}return t;}

পুনরাবৃত্তি fযা 167 এ রেফারেন্স ব্যবহার করে ফাঁস হয় না :

#include"object.h"
size_t f(array_t*a){size_t t=0,i=0;for(;i<array_length(a);i++){object_t**o=array_get_ref(a,i,0);t+=*o->type==t_array?f(*o->ary):1;}return t;}

Ungolfed:

size_t get_recursize (const array_t* const a) {
  pfn();

  object_failnull(a);

  size_t out = 0;

  for (size_t i = 0; i < array_length(a); i++) {

    object_t** o = array_get_ref(a, i, NULL);

    if ( (*o)->type == t_array ) {

      out += get_recursize((*o)->ary);

    } else {
      ++out;
    }
  }
  return out;
}

"তবে কীভাবে," আপনি জিজ্ঞাসা করেন, "এর উত্তর কী সিতে দেওয়া যেতে পারে? অবশ্যই, সি-তে কোনও পরিচালিত অ্যারে নেই এবং আপনি সত্যই ভিন্ন ভিন্ন অ্যারে রাখতে পারবেন না ...?"

"আহা," আমি উত্তর দিয়েছি, "কারণ আমি (জিএনইউ-ইশ) সি 11 এবং আইএসও সি ++ 11" এর জন্য "অবজেক্টস" এর একটি সাধারণ সিস্টেমে কাজ করছি।

এই ফাংশনের জন্য সম্পূর্ণ ডেমো প্রোগ্রামটি হ'ল:

#include "../calc/object/object.h"

size_t get_recursize (const array_t* const a);

define_array_new_fromctype(ssize_t);

int main (void) {

  size_t len = 6;

  static const ssize_t h[6] = { -1, 3, -5, 7, -9, 11 };

  array_t* a = array_new_from_ssize_t_lit(h, len, t_realint);

  size_t rsize = get_recursize(a);

  printf("Recursive size of a: %zu\n", rsize);

  object_t* asobj = object_new(t_array, a);
  array_destruct(a);

  array_t* b = array_new(NULL, -1);

  for (size_t j = 0; j < 10; j++) {
    array_append(b, asobj);
  }

  object_destruct(asobj);

  rsize = get_recursize(b);

  printf("Recursive size of b: %zu\n", rsize);

  asobj = object_new(t_array, b);
  array_destruct(b);

  array_t* c = array_new(NULL, -1);

  for (size_t i = 0; i < 100; i++) {
    array_append(c, asobj);
  }

  object_destruct(asobj);

  rsize = get_recursize(c);

  printf("Recursive size of c: %zu\n", rsize);

  array_destruct(c);

  return EXIT_SUCCESS;
}

size_t get_recursize (const array_t* const a) {
  pfn();

  object_failnull(a);

  size_t out = 0;

  for (size_t i = 0; i < array_length(a); i++) {

    object_t** o = array_get_ref(a, i, NULL);

    if ( (*o)->type == t_array ) {

      out += get_recursize((*o)->ary);

    } else {
      ++out;
    }
  }
  return out;
}

এই মুহুর্তে, এটি এখানে বাস করে এবং এটি ব্যবহার করার জন্য আপনার সেই রেপো লাগবে।

libfnvআপনার প্ল্যাটফর্মের জন্য সংকলিত ফোলার-নোল-ভো হ্যাশ লাইব্রেরিও লাগবে । এটি সেই ভাণ্ডারে রয়েছে এবং আপনি এটি এখানেও দখল করতে পারেন ।

তাহলে আপনি করতে পারেন cc -DNODEBUG size.c path/to/libfnv.a -o size

বাস্তবায়ন অগত্যা দক্ষ নয়:

$ valgrind --leak-check=full --track-origins=yes --show-leak-kinds=all ./size
==24127== Memcheck, a memory error detector
==24127== Copyright (C) 2002-2015, and GNU GPL'd, by Julian Seward et al.
==24127== Using Valgrind-3.12.0.SVN and LibVEX; rerun with -h for copyright info
==24127== Command: ./size
==24127== 
Recursive size of a: 6
Recursive size of b: 60
Recursive size of c: 6000
==24127== 
==24127== HEAP SUMMARY:
==24127==     in use at exit: 0 bytes in 0 blocks
==24127==   total heap usage: 22,900 allocs, 22,900 frees, 615,584 bytes allocated
==24127== 
==24127== All heap blocks were freed -- no leaks are possible
==24127== 
==24127== For counts of detected and suppressed errors, rerun with: -v
==24127== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)

কিন্তু এটি কাজ করে! মাস্টার্সের সর্বশেষ প্রতিশ্রুতি (যা এই প্রোগ্রামটি সংকলিত) 2 দিন আগে হয়েছিল, যার অর্থ এই জমাটি বৈধ।


1

এক্সিয়ম 118 বাইট

RS(a:Union(List(Any),Any)):INT==(a case List(Any)=>(g:List(Any):=a;leaf? g=>0;r:=#g;for i in g repeat r:=r+RS(i);r);0)

ungolfed

RS(a:Union(List(Any),Any)):INT==
  a case List(Any)=>
          g:List(Any):=a
          leaf? g=>0
          r:=#g
          for i in g repeat r:=r+RS(i)
          r
  0

ফলাফল

(25) -> RS([])=0
   (25)  0= 0
                                        Type: Equation NonNegativeInteger
(26) -> RS([[]]) = 1
   (26)  1= 1
                                           Type: Equation PositiveInteger
(27) -> RS([4, 5, 6]) = 3
   (27)  3= 3
                                           Type: Equation PositiveInteger
(28) -> RS(["four", "five", "six"]) = 3
   (28)  3= 3
                                           Type: Equation PositiveInteger
(29) -> RS(["[[[[]]]]", "[][][][][]", "][][[[]]][]["]) = 3
   (29)  3= 3
                                           Type: Equation PositiveInteger
(30) -> RS([[4, 5, 6]]) = 4
   (30)  4= 4
                                           Type: Equation PositiveInteger
(31) -> RS([["four", "five", "six"]]) = 4
   (31)  4= 4
                                           Type: Equation PositiveInteger
(32) -> RS([["[[[[]]]]", "[][][][][]", "][][[[]]][]["]]) = 4
   (32)  4= 4
                                           Type: Equation PositiveInteger
(33) -> RS([[4], [5], [6]]) = 6
   (33)  6= 6
                                           Type: Equation PositiveInteger
(34) -> RS([["four"], ["five"], ["six"]]) = 6
   (34)  6= 6
                                           Type: Equation PositiveInteger
(35) -> RS([["[[[[]]]]"], ["[][][][][]"], ["][][[[]]][]["]]) = 6
   (35)  6= 6
                                           Type: Equation PositiveInteger
(36) -> RS([[[[[[[[[]]]]]]]]]) = 8
   (36)  8= 8
                                           Type: Equation PositiveInteger
(37) -> RS([[],[],[],[],[],[],[],[]]) = 8
   (37)  8= 8
                                           Type: Equation PositiveInteger
(38) -> RS([[],[],[[]],[[[[]]]]]) = 8
   (38)  8= 8
                                           Type: Equation PositiveInteger
(39) -> RS([0,[-1],[2.3,-4.3],[5,[6]],[7,[8,9,[10,11,[12,13,14]]]]]) = 22
   (39)  22= 22
                                           Type: Equation PositiveInteger
(40) -> RS([['f','o','u','r'], ['f','i','v','e'], ['s','i','x']]) = 14
   (40)  14= 14
                                           Type: Equation PositiveInteger

1

এপিএল (এনএআরএস), 24 টি চর, 48 বাইট

{⍬≡⍵:0⋄×≡⍵:(≢⍵)++/∇¨⍵⋄0}

এটি এখানে 'আমার' অ্যাক্সিয়োম উত্তরের লিটারাল ট্র্যাসেলেশন হবে ... এপিএলে শূন্যতার তালিকাটি হ'ল জিল্ড, যা আপনি ´ [] ´ দিয়ে নির্দেশ করেছেন, ´ হ'ল ´ [[]] ´, ´ 1 2 3´ হ'ল ´ [1,2,3] cc ইসি কিছু পরীক্ষা:

  RS←{⍬≡⍵:0⋄×≡⍵:(≢⍵)++/∇¨⍵⋄0}
  RS ⍬
0
  RS ⊂⍬
1
  RS  4 5 6
3
  RS ("four")("five")("six")
14
  RS ('f' 'o' 'u' 'r') ('f' 'i' 'v' 'e') ('s' 'i' 'x')
14
  RS ("(((())))")("()()()()()")(")()((()))()(")
33
  RS (⊂4 5 6)
4
  RS (⊂("four")("five")("six")) 
15
  RS (⊂("(((())))")("()()()()()")(")()((()))()(") )
34
  RS (,4) (,5) (,6)
6
  RS ⊂¨("four")("five")("six")
17
  RS ⊂¨("(((())))")("()()()()()")(")()((()))()(") 
36
  RS ⊂⊂⊂⊂⊂⊂⊂⊂⍬
8
  RS ⍬⍬⍬⍬⍬⍬⍬⍬
8
  RS ⍬⍬(⊂⍬)(⊂(⊂(⊂⍬)))
8
  RS 0(,¯1)(2.3 ¯4.3)(5 (,6))(7 (8 9 (10 11 (12 13 14))))  
22     

অন্যান্য ধরণের ফলাফলের মুদ্রণের জন্য অনুশীলনের প্রস্তাব দেওয়া হয় যে আমাদের আরও একটি ফাংশন প্রয়োজন (ব্যায়ামের জন্য আরএস এবং রুপি উভয়ই ঠিক আছে)

  Rs←{⍬≡⍵:0⋄(''≡0↑⍵)∨0=≡⍵:0⋄(≢⍵)++/∇¨⍵}
  Rs ("four")("five")("six")
3
  Rs ("(((())))")("()()()()()")(")()((()))()(")
3
  Rs (⊂("four")("five")("six"))
4
  Rs (⊂("(((())))")("()()()()()")(")()((()))()(") )
4
  Rs ⊂¨("four")("five")("six")
6
  Rs ⊂¨("(((())))")("()()()()()")(")()((()))()(")
6
  Rs 0(,¯1)(2.3 ¯4.3)(5 (,6))(7 (8 9 (10 11 (12 13 14))))
22
  Rs ('f' 'o' 'u' 'r') ('f' 'i' 'v' 'e') ('s' 'i' 'x')
3

দেখুন কীভাবে কিছু ইনপুট প্রদর্শিত হয় আমরা ও ফাংশনটি ব্যবহার করি:

  o←⎕fmt
  o 0(,¯1)(2.3 ¯4.3)(5 (,6))(7 (8 9 (10 11 (12 13 14))))
┌5─────────────────────────────────────────────────────────┐
│  ┌1──┐ ┌2────────┐ ┌2─────┐ ┌2──────────────────────────┐│
│0 │ ¯1│ │ 2.3 ¯4.3│ │  ┌1─┐│ │  ┌3──────────────────────┐││
│~ └~──┘ └~────────┘ │5 │ 6││ │7 │    ┌3────────────────┐│││
│                    │~ └~─┘2 │~ │8 9 │      ┌3────────┐││││
│                    └∊─────┘ │  │~ ~ │10 11 │ 12 13 14│││││
│                             │  │    │~~ ~~ └~────────┘2│││
│                             │  │    └∊────────────────┘3││
│                             │  └∊──────────────────────┘4│
│                             └∊──────────────────────────┘5
└∊─────────────────────────────────────────────────────────┘

এই মুদ্রণ জিল্ড, এবং একটি 8 জিল্ড তালিকা:

  o ⍬
┌0─┐
│ 0│
└~─┘
  o ⍬⍬⍬⍬⍬⍬⍬⍬
┌8──────────────────────────────────────┐
│┌0─┐ ┌0─┐ ┌0─┐ ┌0─┐ ┌0─┐ ┌0─┐ ┌0─┐ ┌0─┐│
││ 0│ │ 0│ │ 0│ │ 0│ │ 0│ │ 0│ │ 0│ │ 0││
│└~─┘ └~─┘ └~─┘ └~─┘ └~─┘ └~─┘ └~─┘ └~─┘2
└∊──────────────────────────────────────┘

1

জাভা, 96 বাইট

int c(Object[]a){int r=a.length;for(var i:a)r+=i instanceof Object[]?c((Object[])i):0;return r;}

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

ব্যাখ্যা:

int c(Object[]a){  // Recursive method with Object-array parameter and integer return-type
  int r=a.length;  //  Result-sum, starting at the size of the input-array
  for(var i:a)     //  Loop over the input-array:
    r+=            //   Increase the result-sum by:
       i instanceof Object[]?
                   //    If the current item is an array:
        c((Object[])i) 
                   //     A recursive call with this item
       :           //    Else:
        0;         //     0 (so leave the result-sum the same)
  return r;}       //  Return the result-sum

1

সংযুক্তি , 21 বাইট

{#_+Sum!$=>IsArray\_}

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

সক্রিয় আউট C # এর পদ্ধতির অ্যাটাচেতে খুব ছোট।

বিকল্প

25 বাইট f[x]:=#x+Sum!f=>IsArray\x

26 বাইট f[x]:=#x+Sum[f=>IsArray\x]

35 বাইট f:=Sum##{If[IsArray@_,1+f@_,1]}=>Id

35 বাইট f:=Sum@Map[{If[IsArray@_,1+f@_,1]}]

37 বাইট f[x]:=Sum[{If[IsArray@_,1+f@_,1]}=>x]


1

ক্লোজার, 79 77 51 বাইট

ইনপুটটি ভেক্টর নয়, একটি তালিকা হতে হবে। উভয় ব্যবহার করে সমর্থন করা হবে sequential?

(defn f[i](if(seq? i)(apply +(count i)(map f i))0))

আগে:

(defn f[i](if(seq? i)(if(some seq? i)(apply +(count i)(map f i))(count i))0))

-1

পাইথন, 72 বাইট

l=lambda a:0if len(a)==0else len(a)+sum(l(i)for i in a if type(i)==list)

আপনি সেখানে কিছু স্থান সরিয়ে ফেলতে পারেন
ব্লু

বিশেষত, 0এবং এর মধ্যে if, 0এবং else, এবং )এবং for
জাকারি

2
আপনার চ্যাট বট অ্যাকাউন্টের জন্য যদি আপনার প্রয়োজন হয় তবে সাইটে অর্থবহ অবদান রাখার বিষয়টি বিবেচনা করুন। এটি পূর্ব-বিদ্যমান 42 বাইট পাইথন উত্তরের তুলনায় একেবারে কিছুই যোগ করে না।
ডেনিস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.