একটি সাধারণ স্প্রেডশিট মূল্যায়ন করুন


13

বিধি

  1. কোনও সেল রেঞ্জের রেফারেন্স ( A2:B3) নেই।

  2. সর্বাধিক 9 সারি এবং 9 টি কলাম।

  3. কোন বিজ্ঞপ্তি উল্লেখ বা সূত্র ত্রুটি।

  4. খালি সেলগুলি মূল্যায়ন করে 0

  5. ডেটা কেবল সংখ্যা, তবে স্ট্রিং হিসাবে নেওয়া যেতে পারে।

  6. সূত্রগুলি স্ট্রিং।

বাস্তবায়ন পছন্দ

আপনাকে অবশ্যই এই বিষয়ে আপনার পছন্দগুলি বর্ণনা করতে হবে:

  1. যে কোনও একক অক্ষরের সাথে উপসর্গ করার জন্য সূত্রগুলি প্রয়োজন, যেমন =- বা না।

  2. এক্সেল এট আল দ্বারা ব্যবহৃত দুটি কনভেনশন অনুসারে দ্বিতীয় সারির বামতম সেলটি A2বা rowR2C1

  3. সেল রেফারেন্সগুলিতে যেকোন একক-অক্ষর প্রাক- বা প্রত্যয় প্রয়োজন, যেমন $- বা না।

  4. নাল, ফাঁকা স্ট্রিং, খালি তালিকা ইত্যাদির একটি, 0খালি ঘরগুলি উপস্থাপন করার জন্য (তবে নয় )।

  5. আপনার জমা দেওয়ার ভাষা (স্প্রেডশিট পরিচালকদের অনুমতি নেই)।

  6. সূত্রগুলির ভাষা (উপরের থেকে পৃথক হতে পারে)।

  7. আপনার সমাধানটি ব্যাখ্যা করার জন্য ব্রাউন পয়েন্ট বা কুকিজ।

উদাহরণ

পছন্দগুলি: 7 =:; 8 A2:; 9: কোনটি নয়; 10 "":; 12: এক্সেল ফর্মুলা ভাষা

ভিতরে:

[[       2, 3],
 ["=A1+B1",""]]

বাইরে:

[[2,3],
 [5,0]]

ভিতরে:

[[       2,"=A1+B2"],
 ["=A1+B1",      ""]]

বাইরে:

[[2,2],
 [4,0]]

ভিতরে:

[[ 3, 4,"=A1*B1"],
 [ 2, 5,"=A2*B2"],
 ["","","=C1+C2"]]

বাইরে:

[[3,4,12],
 [2,5,10],
 [0,0,22]]

ভিতরে:

[["","=2*B2*B3"     ,""],
 [ 3,"=A1+(A2+C2)/2", 2],
 [ 1,"=C1+(A3+C3)/2", 5]]

বাইরে:

[[0,15,  0],
 [3, 2.5,2],
 [1, 3  ,5]]

* সূত্রের ভাষা অবশ্যই পিপিসিজি গ্রহণযোগ্য হবে , তবে আপনাকে কেবল সেল রেফারেন্স প্লাস 3 এবং 4 এর মাপদণ্ডকে সমর্থন করতে হবে, যেমন। সংযোজন এবং আধিপত্য নির্ধারণ।


এক্সেল / ভিবিএতে একটি উত্তর জমা দেওয়া অনুমোদিত নয়? Expand array to cells, evaluate.
ম্যাজিক অক্টোপাস আরন

@ কারাসোকম্পুটিং যদি আপনি কেবল এক্সেলকে তার কাজটি করতে না দিয়ে থাকেন তবে নির্দ্বিধায় পোস্ট করুন।
অ্যাডম

আমাদের কি কোষগুলি শূন্য-ভিত্তিক হতে পারে? হিসাবে হিসাবে , R0C0?
কনর ও'ব্রায়ান

@ কনরোও ব্রায়ান না, এটি এক্সেল এট আল দ্বারা ব্যবহৃত দুটি কনভেনশনগুলির মধ্যে
অ্যাডম

উত্তর:


6

জাভাস্ক্রিপ্ট, 125 112 105 বাইট

ব্যবহার করতে, f=শুরুতে যুক্ত করুন এবং পছন্দ করুন f(argument)

a=>a.map(b=>b.map(p=>+p?p:p?eval(p.replace(/[A-I][1-9]/g,m=>`a[${m[1]-1}][${(m.charCodeAt(0)-65)}]`)):0))

পছন্দসমূহ:

  1. প্রয়োজন হয় না =
  2. দ্বিতীয় সারির বামে সর্বাধিক ঘর A2
  3. কোন উপসর্গ বা প্রত্যয় প্রয়োজন হয় না।
  4. "" (খালি স্ট্রিং) খালি ঘর বোঝাতে।
  5. জাভাস্ক্রিপ্ট।
  6. জাভাস্ক্রিপ্ট।
  7. কুকিজ। 🍪🍪🍪

ব্যাখ্যা:

এই সমাধানটি কার্যপত্রকের সমস্ত কক্ষগুলিতে পুনরাবৃত্তি করে (প্রদত্ত অ্যারের উপ-অ্যারের প্রতিটি উপাদান) এবং যদি খালি খালি স্ট্রিং পাওয়া যায় তবে প্রদত্ত অ্যারের সাথে সম্পর্কিত রেফারেন্সের সাথে এর সেল রেফারেন্সগুলি প্রতিস্থাপন করে এবং এক্সপ্রেশনকে মূল্যায়ণ করে সঙ্গে eval()(হাঁ, যে মন্দ জিনিস যে আপনার দুঃস্বপ্ন মধ্যে haunts আপনি )। এই সমাধানটি ধরে নেয় যে ইনপুট অ্যারেতে সরবরাহ করা ধ্রুবকগুলি পূর্ণসংখ্যার ধরণের।

পরীক্ষার কেস

f=a=>a.map(b=>b.map(p=>+p?p:p?eval(p.replace(/[A-I][1-9]/g,m=>`a[${m[1]-1}][${(m.charCodeAt(0)-65)}]`)):0))

console.log(f([[1,2,3],["A1+B1+C1",10,11]]));
console.log(f([[1,2,5,4,6,89,0],[0,1,2,3,"A2+A1",5,6]]));
console.log(f([[1,2,4,5],["A1/B1*C1+A1+Math.pow(5,B1)",2,3,4]]));


খুব সুন্দর. এখানে: 🍪।
অ্যাডম

কোনও কারণ আপনি /\w\d/gআপনার রেজেক্সের জন্য ব্যবহার করতে পারবেন না ?
বুলেটগুলি

@ পাওয়েলেসগুলিও অঙ্কগুলির সাথে \wমেলে এবং \d0 টির সাথেও মেলে, এই ক্ষেত্রে আপনি যা চান না উভয় জিনিস। /[A-I][1-9]/gযদিও কাজ করা উচিত
LarsW

@ লার্সডাব্লু /\w\d/gপরীক্ষার ক্ষেত্রে ঠিক একই ফলাফল তৈরি করে। এছাড়াও বিভাজক অংশে আক্ষরিক একটি টেমপ্লেট ব্যবহার করা কয়েক বাইট সংরক্ষণ করতে পারে।
বুলেটগুলি

@ পাওয়েলস হ্যাঁ, তবে পরীক্ষার কেসগুলি অসম্পূর্ণ হতে পারে। যাইহোক, আমি ধরে নিয়েছি নির্বাচিত নিয়মগুলি অনুসরণ করা দরকার; তবে সেগুলি কেবল ইনপুট বিধিনিষেধ (বা উভয়) হতে পারে, যাতে সমস্যাটিও হতে পারে
লার্সডাব্লু

4

পিএইচপি, 265 263 259 258 257 240 224 222 213 202 196 বাইট

বৈশিষ্ট্যযুক্ত array_walk_recursive, একটি পুনরাবৃত্তি বেনামে ফাংশন এবং preg_replace_callback:

function f(&$a){array_walk_recursive($a,$p=function(&$c)use($a,&$p){eval('$c='.preg_replace_callback("#R(.)C(.)#",function($m)use($a,&$p){$d=$a[$m[1]-1][$m[2]-1];$p($d);return$d;},$c?:0).';');});}

অথবা

function f(&$a){array_walk_recursive($a,$p=function(&$c)use($a,&$p){eval('$c='.preg_replace_callback("#R(.)C(.)#",function($m)use($a,&$p){return$p($a[$m[1]-1][$m[2]-1]);},$c?:0).';');return$c;});}

ইনপুটটিতে পরিচালনা করে: রেফারেন্স দ্বারা কল করুন। এটি অনলাইনে পরীক্ষা করুন

  • কোন এক্সপ্রেশন উপসর্গ
  • রেফারেন্স ফর্ম্যাট R2C1, কোন উপসর্গ
  • খালি কক্ষের জন্য জঘন্য কিছু
  • সমস্ত পাটিগণিত সহ যেকোন (ছোট) পিএইচপি এক্সপ্রেশনকে মূল্যায়ন করে

ভাঙ্গন (প্রথম সংস্করণ)

function f(&$a)
{
    array_walk_recursive($a,                    # walk through elements ...
        $p=function(&$c)use($a,&$p){            # use array $a and recursive $p
            eval('$c='.                             # 3. evaluate expression
                preg_replace_callback('#R(.)C(.)#', # 2. replace references with ...
                function($m)use($a,&$p){
                    $d=$a[$m[1]-1][$m[2]-1];            # $d=content of referenced cell
                    $p($d);                             # recursive evaluation
                    return$d;                           # return $d
                },$c?:0)                            # 1. replace empty with 0
                .';'
            );
        }
    );
}

+1 খুব সুন্দর; 🍪। আপনি স্ট্যান্ডার্ড গাণিতিক বলছেন, কিন্তু সত্যিই কোনও যুক্তিযুক্ত পিএইচপি এক্সপ্রেশন কাজ করবে, না?
অ্যাডাম

1
@ অ্যাডাম এখন আপনি এটি উল্লেখ করেছেন ... যতক্ষণ না এটি ছোট হাতের নাগরিক্য, হ্যাঁ। যদিও max(range(A1,A3))বিভ্রান্তিকর হতে পারে। : ডি
টাইটাস

1
ভাল গল্ফ আমাকে খুঁজে পেতে বেশ দীর্ঘ সময় নিয়েছিল: 1 বাইট সংরক্ষণ $d=$c;preg_match($x="#[A-Z](.)#",$c=$c[0]করা preg_match($x="#[A-Z](.)#",$c=($d=$c)[0]উচিত।
ক্রিস্টোফ

এটি চেষ্টা করে অনলাইনে অন্তর্ভুক্ত করা কি সম্ভব ! লিঙ্ক সরাবেন?
অ্যাডাম

1
@ ক্রিসটফ দ্বিতীয় উদাহরণটি ঠিক করার জন্য আমাকে একটি নতুন পদ্ধতির গ্রহণ করেছিলেন ... এবং প্রক্রিয়াতে আরও অনেক কিছু বাঁচিয়েছিলেন ... আরও গল্ফ করে
তিতাস

3

গণিত, 119 115 95 বাইট

(m=#/.""->0)//.s_String:>ToExpression@StringReplace[s,"R"~~x_~~"C"~~y_:>"m[["<>{x,",",y,"]]"}]&

পছন্দসমূহ:

  1. উপসর্গ নেই।
  2. R2C1 শৈলী।
  3. উপসর্গ বা প্রত্যয় নেই।
  4. "" খালি কোষের জন্য।
  5. ম্যাথামেটিকাল।
  6. ম্যাথামেটিকাল। ফর্মের ভেরিয়েবল ব্যবহার করে RxCyনা এবং এর পার্শ্ব প্রতিক্রিয়া নেই এমন সালিশী গাণিতিক এক্সপ্রেশনগুলি কাজ করা উচিত।

ব্যাখ্যা

(m=#/.""->0)

আমরা ইনপুট ( #) এর সমস্ত খালি স্ট্রিংগুলি জিরো দিয়ে প্রতিস্থাপন এবং ফলাফলটি সংরক্ষণ করে শুরু mকরি কারণ আমাদের এটি আবার অন্য জায়গায় প্রয়োজন।

...//.s_String:>...

পুনঃপুনঃ বারে sনিম্নলিখিত যে কোনও স্ট্রিং প্রতিস্থাপন করুন ...

...StringReplace[s,"R"~~x_~~"C"~~y_:>...]

ফর্মের যে কোনও সাবস্ট্রিংয়ের সাথে মেলে RxCy মধ্যে sএবং তাদের সঙ্গে প্রতিস্থাপন করুন ...

..."m[["<>{x,",",y,"]]"}

যা দেয় m[[x,y]], কোনটি ব্যবহার করে xএবংy ম্যাট্রিক্স মধ্যে সূচকের হিসাবে m

...ToExpression@...

Finallz, এই স্ট্রিংটিকে ম্যাথমেটিক্স এক্সপ্রেশন হিসাবে মূল্যায়ন করুন।


কুল। আমি ভেবেছিলাম যে এর থেকে কিছুটা বেশি সময় লাগবে ... এটি চেষ্টা করার কোনও উপায়?
অ্যাডাম

@ অ্যাডাম দুর্ভাগ্যক্রমে, ম্যাথিক্সে এটি কাজ করে বলে মনে হচ্ছে না, সুতরাং ম্যাথমেটিকার একটি অনুলিপি ছাড়া সম্ভবত তা নয়।
মার্টিন ইন্ডার

এখনও বিল্টিনের জন্য অপেক্ষা করছে ...
ওয়াইএসসি

@ ওয়াইএসসি এক্সেল, 0 বাইট
অ্যাডম

@ অ্যাডাম এটি এই চ্যালেঞ্জের নিয়ম অনুসারে প্রতিযোগিতা করবে না। এছাড়াও, আমি মনে করি মার্টিন একটি কুকির প্রাপ্য।
এরিক আউটগল্ফার

2

ক্লোজার, 263 281 বাইট

ওহ, ধিক্কার ছাড়াই apply map vectorফলাফল স্থানান্তরিত হয়, যেমন A2বর্ণমালার আগে রয়েছে B1

#(apply map vector(partition(count(% 1))(for[v(vals(loop[C(into{}(mapcat(fn[i r](map(fn[j v][(str j i)(or v"0")])"ABCDEFGHI"r))(rest(range))%))P[]](if(= C P)C(recur(into(sorted-map)(for[[k v]C][k(reduce(fn[r[K V]](clojure.string/replace r K V))v C)]))C))))](eval(read-string v)))))

উদাহরণ:

(def f #(...))

(f [["2" "3"]["(+ A1 B1)" nil]])
([2 3] [5 0])

(f [[nil ,"(* 2 B2 B3)"                ,nil],
    ["3" ,"(+ A1 (/ (+ A2 C2) 2))"     ,"2"],
    ["1" ,"(-> A3 (+ C3) (/ 2) (+ C1))","5"]])
([0 15N 0] [3 5/2 2] [1 3 5])
  1. সূত্রগুলি এস-এক্সপ্রেশন
  2. A2
  3. না, (+ A1 A2)ঠিক আছে
  4. nilএবং falseখালি ঘর হিসাবে কাজ করে, কিন্তু খালি স্ট্রিং এটি করে না
  5. Clojure
  6. এস-এক্সপ্রেশন (ক্লোজার + কোনও বিল্ট-ইন ম্যাক্রোগুলি)

থ্রেড প্রথম ম্যাক্রোর একটি উদাহরণ:

(macroexpand '(-> A3 (+ C3) (/ 2) (+ C1)))
(+ (/ (+ A3 C3) 2) C1)

মান শুরু Cলুপ একটি হ্যাশ মানচিত্রে হয়, কী সেল নাম এবং মান মূল মান। তারপরে সমস্ত কক্ষের রেফারেন্সগুলিকে রেফারেন্সড সেলগুলির সামগ্রী দ্বারা প্রতিস্থাপন করা হবে যতক্ষণ না আমরা রূপান্তরিত ( Pরিভিয়ার =)C রিভিয়ার ওভারেন্ট) কোষগুলি মূল্যায়ন করা হয় এবং সমতল কাঠামোটিকে আবার কোনও নেস্টেড তালিকায় ভাগ করা হয়।

একটি সমাধান যেখানে এটি শীতল হবে A1, A2ইত্যাদি আসলে callable ফাংশন, তারপর হয় (* 2 B2 B3)থেকে পুনর্লিখিত করা যেতে পারে(* 2 (B2) (B3)) এবং মৃত্যুদন্ড কার্যকর।

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


2

এপিএল (ডায়ালগ) , 51 বাইট

⍎¨({((⍴⍵)↑⍉⎕A∘.,1↓⎕D),¨'←',¨⍵}{0::⍵⋄×≢⍵:⍕⍎⍕⍵⋄0}¨)⍣≡
  1. না

  2. A2

  3. না

  4. খালি স্ট্রিং

  5. APL

  6. APL

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

⍎¨ ফলাফলের প্রতিটি কক্ষের মূল্যায়ন করুন

()⍣≡ আরও কিছু পরিবর্তন না হওয়া পর্যন্ত নিম্নলিখিত দুটি ক্রিয়াকলাপের অবিচ্ছিন্ন প্রয়োগ

{ প্রয়োগ করা হবে প্রথম বেনাম ফাংশন…

  0 যে কোনও
  :: ত্রুটিতে:
    যুক্তিটি অচল করে ফিরুন

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

   যদি যুক্তি এর
   সমতা:
  × ইতিবাচক
  : তারপর:
    stringify
    মূল্যায়ন
    stringified
    যুক্তি

   অন্য;

  0 শূন্য ফিরে

 ... প্রতিটি কক্ষে

{ প্রয়োগ করতে হবে দ্বিতীয় বেনাম ফাংশন ...

  '←',¨
   আর্গুমেন্টের  প্রতিটি কক্ষে একটি অ্যাসাইনমেন্ট তীর প্রস্তুত করুন

  (… এর ),¨ প্রতিটি কক্ষে নিম্নলিখিতটি প্রিপেন্ড করুন

   1↓
   ⎕D সমস্ত ডি আইজিটের স্ট্রিংয়ের  প্রথমটি ড্রপ করুন (অর্থাত শূন্য)

   ⎕A এলফ্যাবেটের  সমস্ত অক্ষর নীচে নেমে যাওয়ার
   ∘., সাথে একটি সংক্ষিপ্ত সারণী তৈরি করুন (বাকী অঙ্কগুলি ডানদিকে যাবে)

    স্থানান্তর (ক্রমবর্ধমান সংখ্যা নিচে পেতে, ডানদিকে অগ্রগতি)

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

    
     যুক্তির  আকার

} ... পূর্ববর্তী ফাংশন ফলাফল।


1
আপনার ব্যাখ্যাগুলি সর্বদা সুন্দর, ধন্যবাদ, এই উত্তরগুলি পড়া থেকে আমি যা জানি না তার চেয়েও বেশি এপিএল শিখতে চাই want
ম্যাজিক অক্টোপাস আরন

@ কারাসোকম্পুটিং ধন্যবাদ আমি আপনাকে সহায়তা করে খুশি হবে। এপিএল চ্যাট রুমে বিনা দ্বিধায় প্রশ্ন এবং অনুরোধ করুন । আপনার যদি প্রয়োজন হয় তবে আমি আপনাকে সেট আপ করতে সহায়তা করব।
অ্যাডম

1

পাইথন 2 273,265,263 , 259 বাইট

import re
def g(m):x=m.group();return's[%d][%d]'%(int(x[1])-1,ord(x[0])-65)
e=enumerate
while'='in`s`:
    for x,i in e(s):
        for i,j in e(i):
            try:s[x][i]=0if not j else float(eval(re.sub('\w\d',g,str(j)).strip('=')))
            except:pass

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

পছন্দসমূহ:

  1. =

  2. A2,

  3. না

  4. ""

  5. পাইথন 2.7

  6. পাইথন এক্সপ্রেশন

প্রাথমিক ব্যাখ্যা:

সাবলিস্টে প্রতিটি সূত্রের জন্য, এটি সম্পর্কিত তালিকার সাথে বিকল্পযুক্ত করুন (এটি বি 1 এস [0] [1]) সূচকের সাথে ফলাফলটি মূল্যায়ন করুন!

  • -4 বাইটকে স্ট্র () ব্যাকটিক্সে পরিবর্তন করে!

আপনি আপনার উত্তরে পুনরায় আমদানি করেন নি। এছাড়াও এটি এই ইনপুটটি পাস করে না:s=[[ 3, 4,"max(A1,B1)"],[ 2, 5,"A2**B2"],[ "", "","C1+C2"]]
ডেড পসসাম

ইনপুট ফর্ম্যাটটি [[ 3, 4,"=max(A1,B1)"],[ 2, 5,"=A2**B2"],[ "", "","=C1+C2"]]হাইডারের অংশ হিসাবে সেখানে রয়েছে! এটি অনলাইন লিঙ্ক চেষ্টা করে দেখুন!
কেরথানা প্রভাকরণ

1
এটি বাইট গণনায় অন্তর্ভুক্ত করা উচিত। এই সাইটে অন্যান্য অজগর উত্তরগুলি দেখুন
ডেড পসসাম

তাই কি? আমি কোডগোফের নেট। মন্তব্যের জন্য ধন্যবাদ. এটি যোগ করা হবে।
কীর্তনা প্রভাকরণ

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