জুলিয়ায় গল্ফ করার টিপস


20

জুলিয়ায় গল্ফ করার জন্য আপনার কাছে কোন সাধারণ টিপস রয়েছে? আমি এমন ধারণাগুলি সন্ধান করছি যা সাধারণভাবে কোড গল্ফ সমস্যার ক্ষেত্রে প্রয়োগ করা যেতে পারে যা জুলিয়ার অন্তত কিছুটা নির্দিষ্ট (যেমন "মন্তব্যগুলি সরান" কোনও উত্তর নয়)।

উত্তর:


19

দ্রষ্টব্য: নীচে কিছু পুরানো টিপস থাকতে পারে, কারণ জুলিয়া কাঠামোর দিক থেকে এখনও বেশ স্থিতিশীল নয়।

কয়েকটি চরিত্র সংরক্ষণ করার জন্য কয়েকটি কৌশল

  1. ওভারলোড অপারেটররা প্রায়শই ব্যবহৃত বাইনারি ফাংশন সহ । উদাহরণস্বরূপ, আপনার যদি অনেকগুলি পূর্ণসংখ্যক বিভাগ প্রয়োজন হয় এবং বিপরীত বিভাগের প্রয়োজন হয় না, ব্যবহার করুন \ =divএবং আপনি তার a\bপরিবর্তে টাইপ করতে পারেন div(a,b)। স্থানটি নোট করুন - এটি "\ =" অপারেটর হিসাবে পার্সিং এড়ানোর জন্য এটি প্রয়োজনীয়। আরও মনে রাখবেন যে, আরপিএল প্রম্পট পর্যায়ে যদি ওভারলোড হয় তবে এটি ব্যবহার করুন (\)=Base.(\)বা \ =Base. \পুনরায় সেট করতে। উল্লেখ্য: কিছু ফাংশন হল UTF-8 অপারেটর, যেমন পূর্ব নির্ধারিত বিদ্যমান আছে ÷জন্য div, যেমন অ্যালেক্স উ দ্বারা লক্ষনীয়
  2. শর্তসাপেক্ষ আউটপুট জন্য স্ট্রিং সহ Use ব্যবহার করুন । এটি হ'ল পরিবর্তে a>0?"Hi":"", "Hi"^(a>0)একটি বাইট বাঁচাতে বা বুলিয়ান এ এর "Hi"^aজন্য তিনটি বাইট সংরক্ষণ করুন।
  3. (কখনও কখনও) ছোট স্থির আকারের ভেক্টরগুলিকে পৃথক ভেরিয়েবল হিসাবে সংরক্ষণ করুন । উদাহরণস্বরূপ, পরিবর্তে a=split("Hi there"," "), আপনি অ্যাসাইনমেন্টে মাত্র দুটি অতিরিক্ত অক্ষরের ব্যয় করে প্রতিটি ব্যবহারের জন্য তিনটি বাইট সংরক্ষণ করতে এবং যা ব্যবহার হিসাবে চিহ্নিত করতে পারেন a[1]এবং a[2]ব্যবহার করে এড়াতে সক্ষম হতে a,b=split("Hi there"," ")পারেন । স্পষ্টতই, যদি আপনি ভেক্টর অপারেশনগুলির সাথে কাজ করতে পারেন তবে এটি করবেন না।ab
  4. অ্যারের সাথে প্রথম অ্যারের অ্যাক্সেস করুন[] - অ্যারেগুলির জন্য, এক্সপ্রেশনটি A[]সমান A[1]। মনে রাখবেন যে আপনি যদি প্রথম চরিত্রটি পেতে চান বা টিপলসের পক্ষে স্ট্রিংসের পক্ষে কাজ করে না।
  5. অ্যারে, টিপলস বা স্ট্রিংয়ের জন্য ইম্পেম্টি ব্যবহার করবেন না - পরিবর্তে ==[]অ্যারে এবং টিপলসগুলির জন্য ব্যবহার করুন ==(); একইভাবে, নেতিবাচক জন্য, ব্যবহার !=[]এবং !=()। স্ট্রিংয়ের ==""জন্য, খালি জন্য ব্যবহার করুন , তবে >""শূন্য নয়, কারণ "" অন্য কোনও স্ট্রিংয়ের আগে অভিধানের মতো রয়েছে।
  6. "যদি" এর জায়গায় ডান শর্ট সার্কিট বুলিয়ান অপারেটরটি ব্যবহার করুন । এটি জুলিয়া-নির্দিষ্ট কিছুটা কম হতে পারে তবে এটি মনে রাখার মতো। একটি অক্ষর সংরক্ষণ করা x<=1&&"Hi"হিসাবে এটি লেখা যেতে পারে x>1||"Hi"(এতক্ষণ বুলেটিয়ান ফেরানো গুরুত্বপূর্ণ নয়)।
  7. স্ট্রিংয়ে অক্ষরের উপস্থিতি যাচাই করতে ব্যবহার করবেন না - যদি আপনি বেসিক ASCII- এ সীমাবদ্ধ থাকেন তবে তার in('^',s)পরিবর্তে ব্যবহার করুন contains(s,"^")। আপনি যদি অন্য অক্ষরগুলি ব্যবহার করতে পারেন তবে আপনি আরও কিছুটা সাশ্রয় করতে পারেন '^'∈sতবে নোট করুন যে ইউটিএফ -8 এ 3 বাইট।
  8. একটি অ্যারে সর্বনিম্ন / সর্বাধিক মান খুঁজছেন? আপনার কোড থেকে একটি অক্ষর শেভ করতে বা ব্যবহারের চেয়ে minimum(x)বা maximum(x)ব্যবহারের চেয়ে সর্বনিম্ন বা সর্বাধিক ব্যবহার করবেন না , যদি আপনি জানেন তবে কমপক্ষে দুটি উপাদান থাকবে। বিকল্পভাবে, আপনি যদি জানেন তবে সমস্ত উপাদান অ-নেতিবাচক হবে, ব্যবহার করুন বাmin(x...)max(x...)xxminabs(x)maxabs(x)
  9. যেখানে সম্ভব এবং চ্যালেঞ্জের দ্বারা অনুমোদিত,, n এর পরিবর্তে একটি আসল নিউলাইন ব্যবহার করুন - নোট করুন যে এটি আপনার কোডটি পড়া আরও শক্ত করে তুলবে এবং এর অর্থ এই হতে পারে যে লোকেরা আসলে বুঝতে পারা সম্ভব করার জন্য আপনাকে একটি "অদ্বিতীয়" সংস্করণ সরবরাহ করতে হবে এটা।
  10. রেজেক্স স্ট্রিংয়ের পরে বিকল্পগুলি রাখুন - আপনি যদি মাল্টলাইন মোডে একটি রেজেক্স স্ট্রিং রাখতে চান, উদাহরণস্বরূপ, টাইপ করবেন না r"(?m)match^ this", টাইপ করবেন না r"match^ this"m, তিনটি অক্ষর সংরক্ষণ করবেন।
  11. ফ্লিপড ব্যবহার করে 1-ডি অ্যারেগুলি বিপরীত করুন - এটিরreverse(x) চেয়ে এক বাইট বেশি দীর্ঘ flipud(x)এবং একই অপারেশনটি সম্পাদন করবে, সুতরাং পরবর্তীটি আরও ভাল।
  12. যেখানে সম্ভব, ধাক্কা না দিয়ে অ্যারে কনটেনটেশন ব্যবহার করুন! - সাধারণ অ্যারেগুলির জন্য, এটি সহজেই করা যায়। অ্যারে এলিমেন্ট সহ যে কোনও টাইপের অ্যারেগুলির জন্য আপনার যুক্ত অ্যারেগুলির চারপাশে কোঁকড়ানো বন্ধনী প্রয়োজন (এটি {[1,2]}নয়, {1,2}) - জুলিয়া ০.৪ এর জন্য আপনার প্রয়োজন হবে Any[[1,2]]
  13. অ্যারে বা স্ট্রিংয়ের আকার পেতে অ্যারে ইনডেক্সিং ব্যবহার করুন - আপনি endঅ্যারে ইনডেক্সিংয়ের মধ্যে ব্যবহার করলে এটি স্বয়ংক্রিয়ভাবে অ্যারে / স্ট্রিংয়ের দৈর্ঘ্যে রূপান্তরিত হয়। তার চেয়ে বরং 3 টি অক্ষর সংরক্ষণ করতে k=length(A)ব্যবহার করুন A[k=end]। মনে রাখবেন যে আপনি অবিলম্বে কে ব্যবহার করতে চাইলে এটি উপকারী হতে পারে না be এটি একটি বহুমাত্রিক ক্ষেত্রেও কাজ করে - A[k=end,l=end]এর প্রতিটি মাত্রার আকার পাবেন A- তবে (k,l)=size(A)এই ক্ষেত্রে এক বাইট দ্বারা সংক্ষিপ্ত হয়, তাই আপনি যদি একই সাথে শেষ উপাদানটি অবিলম্বে অ্যাক্সেস করতে চান তবে এটি ব্যবহার করুন।
  14. অ্যারে ইনডেক্সিং ব্যবহার করে একটি সূচক পুনরাবৃত্তকারী পান - ১৩ টির মতো, আপনিও ব্যবহার করে অ্যারের দৈর্ঘ্যের সাথে মিলে একটি পুনরাবৃত্তি অর্জন করতে পারেন, এই A[k=1:end]ক্ষেত্রে kএকটি পুনরাবৃত্তি ম্যাচটি ধরে রাখবে 1:length(A)। আপনি যখন Aএকই সাথে অ্যারে ব্যবহার করতে চান তখন এটি কার্যকর হতে পারে ।
  15. স্ট্রিংটিকে একটি চর অ্যারে রূপান্তর করতে সংগ্রহ ব্যবহার করবেন না - পরিবর্তে collect(A), ব্যবহার করুন [A...]যা একই কাজ করবে এবং 4 বাইট সংরক্ষণ করবে।
  16. একটি স্ট্রিং রূপান্তরিত একটি সংখ্যা প্রয়োজন? এক্সপ্রেশন বা মাল্টি-ক্যারেক্টার ভেরিয়েবল এবং একক-অক্ষর ভেরিয়েবলের জন্য "$(s[i])"বা dec(s[i])ব্যবহার করুন "$i"
  17. ব্যবহার করুন ?:পরিবর্তে &&বা ||শর্তাধীন অ্যাসাইনমেন্টের জন্য - যে, যদি তোমরা শুধুমাত্র কিছু শর্তে একটি কাজ সম্পাদন করতে চান, আপনি লিখে এক বাইট সংরক্ষণ করতে পারবেন cond?A=B:1বদলে cond&&(A=B), অথবা cond?1:A=Bবরং cond||(A=B)। নোট করুন যে 1, এখানে, একটি ডামি মান।
  18. এর পরিবর্তে unionবা এর পরিবর্তেunique - union(s)একই কাজ করবে unique(s)এবং প্রক্রিয়াটিতে একটি বাইট সংরক্ষণ করবে। আপনি যদি নন-এএসসিআইআই অক্ষর ব্যবহার করতে পারেন ∪(s)তবে একই কাজটি করবে এবং কেবলমাত্র 5 বাইটের মধ্যে 5 বাইটের পরিবর্তে ব্যয় হবে union

2
ওহ, আমি পাইথনের প্রথম কৌশলটি কীভাবে পছন্দ করব।
seequ

split("Hi there")প্যাটার্ন আর্গুমেন্টটি কোনও স্পেসের ডিফল্ট হওয়ায় আপনি কেবল ফাঁকা জায়গায় বিভক্ত করতে পারেন ।
অ্যালেক্স এ।

@AlexA। - আমি জানি, তবে এটি টিপটির মূল বিষয় নয়, এবং টিপটি উভয় দিক থেকেই সমানভাবে কার্যকর হয়।
গ্লেন ও

পয়েন্ট 12 0.5 এ পরিবর্তিত হয়েছে।
লিন্ডন হোয়াইট

@ অক্সিনাবক্স - আমি অবাক হই না, আমি বেশ নিশ্চিত যে তাদের মধ্যে কয়েকজন এখনই পুরানো হয়ে গেছে। আমি মূলত 0.3 এর টিপসের বেশিরভাগটি লিখেছিলাম, আমার মনে হয়।
গ্লেন ও

15

ফাংশন সংজ্ঞায়িত করতে অপারেটরদের পুনরায় সংজ্ঞা দিন

পুনরায় সংজ্ঞায়িত অপারেটরগুলি বন্ধনী এবং কমাগুলিতে প্রচুর বাইট সংরক্ষণ করতে পারে।

পুনরাবৃত্ত ইউনারী অপারেটরগুলি

অবিচ্ছিন্ন উদাহরণের জন্য, ফিবোনাচি অনুক্রমের নিম্নলিখিত পুনরাবৃত্তিমূলক বাস্তবায়নগুলির সাথে তুলনা করুন:

F(n)=n>1?F(n-1)+F(n-2):n # 24 bytes
!n=n>1?!~-n+!(n-2):n     # 20 bytes
!n=n>1?!~-n+!~-~-n:n     # 20 bytes

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

পুনরায় সংজ্ঞায়িত অপারেটর তার প্রাথমিক অগ্রাধিকার ধরে রাখে।

মনে রাখবেন যে আমরা ইতিমধ্যে পূর্ণসংখ্যার জন্য সংজ্ঞায়িত করা হয়েছে, কেবলমাত্র বুলিয়ানদের জন্যই সংজ্ঞায়িত হওয়ার পরে আমরা !পক্ষে যেতে পারিনি favor~~!

বাইনারি অপারেটর

এমনকি পুনরাবৃত্তি ছাড়াই অপারেটরের নতুন সংজ্ঞা দেওয়া বাইনারি ফাংশন সংজ্ঞায়নের চেয়ে কম। একটি সাধারণ বিভাজ্যতা পরীক্ষার নিম্নলিখিত সংজ্ঞাগুলি তুলনা করুন।

f(x,y)=x==0?y==0:y%x==0 # 23 bytes
(x,y)->x==0?y==0:y%x==0 # 23 bytes
x->y->x==0?y==0:y%x==0  # 22 bytes
x\y=x==0?y==0:y%x==0    # 20 bytes

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

পুনরাবৃত্তি বাইনারি অপারেটর

অ্যাকারম্যান ফাংশন গণনা করতে বাইনারি অপারেটরটিকে কীভাবে পুনরায় সংজ্ঞায়িত করতে হবে তা নীচে বর্ণনা করা হয়েছে:

A(m,n)=m>0?A(m-1,n<1||A(m,n-1)):n+1    # 35 bytes
^ =(m,n)->m>0?(m-1)^(n<1||m^~-n):n+1   # 36 bytes
| =(m,n)->m>0?m-1|(n<1||m|~-n):n+1     # 34 bytes
m\n=m>0?~-m\(n<1||m\~-n):n+1           # 28 bytes

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

নোট করুন যে ^নিয়মিত শনাক্তকারী ব্যবহার করার চেয়েও বেশি দীর্ঘ, কারণ এর প্রাধান্য খুব বেশি।

যেমনটা পূর্বে বর্ণিত

m|n=m>0?m-1|(n<1||m|~-n):n+1           # 28 bytes

|ইতিমধ্যে এই ক্ষেত্রে সংজ্ঞায়িত হিসাবে পূর্ণসংখ্যার যুক্তিগুলির জন্য কাজ করবে না । পূর্ণসংখ্যাগুলির জন্য সংজ্ঞাটি পরিবর্তিত হতে পারে

m::Int|n::Int=m>0?m-1|(n<1||m|~-n):n+1 # 38 bytes

তবে তা নিষিদ্ধ দীর্ঘ long তবে, বাম আর্গুমেন্ট হিসাবে একটি ফ্লোট এবং ডান আর্গুমেন্ট হিসাবে একটি পূর্ণসংখ্যা পাস করলে এটি কাজ করে


11
  1. খুব সহজেই ফ্যাক্টর দ্বারা প্রলুব্ধ হবেন না (এন) প্ররোচিত বেস লাইব্রেরি factor(n)ফাংশনটিতে একটি মারাত্মক ত্রুটি রয়েছে: এটি একটি বিন্যস্ত পদ্ধতিতে আপনার পূর্ণসংখ্যার গুণককে ফিরিয়ে দেয় Dict। সুতরাং, আপনার যে ডেটাটি চেয়েছিলেন তা পেতে এটির জন্য ব্যয়বহুল collect(keys())এবং collect(values())সম্ভাব্য এছাড়াও একটি catএবং একটি sortপ্রয়োজন। অনেক ক্ষেত্রে ট্রায়াল বিভাগ দ্বারা কেবল ফ্যাক্টর থেকে সস্তা হতে পারে। দুঃখের হলেও সত্য.

  2. mapলুপিংয়ের জন্য মানচিত্রের ব্যবহার একটি দুর্দান্ত বিকল্প। মধ্যে পার্থক্য সচেতন হতে হবে mapএবং map!এবং পরেরটির এর ইন-জায়গা কার্যকারিতা যখন আপনি করতে পারেন গ্রহণকারী।

  3. ম্যাপ্রেডস ব্যবহার mapreduce মানচিত্রের কার্যকারিতা আরও প্রসারিত করে এবং একটি উল্লেখযোগ্য বাইট-সেভার হতে পারে।

  4. বেনামে ফাংশন দুর্দান্ত! .. বিশেষত যখন উপরোক্ত mapফাংশনগুলিতে পাস করা হয় ।

  5. সংশ্লেষিত অ্যারে ফাংশনগুলি cumprod , cumsumস্বাদযুক্ত cumminএবং অন্যান্য অনুরূপ নামযুক্ত ফাংশন একটি এন-ডাইমেনশনাল অ্যারের নির্দিষ্ট মাত্রায় বর্ধিত ক্রিয়াকলাপকে সক্ষম করে। (বা অ্যারে 1-ডি হয় তবে * আন * নির্দিষ্ট করা হয়েছে)

  6. যে কোনওটির জন্য সংক্ষিপ্ত স্বরলিপি যখন আপনি একটি বহুমাত্রিক অ্যারে (বা ডিক্ট) এর একটি নির্দিষ্ট মাত্রার সমস্ত নির্বাচন করতে চান, উদাহরণস্বরূপ A[Any,2], আপনি ব্যবহার করে বাইট সংরক্ষণ করতে পারেনA[:,2]

  7. ফাংশনগুলির জন্য একক-লাইন স্বরলিপি ব্যবহার করুন এর পরিবর্তে function f(x) begin ... endআপনি প্রায়শই সরল করতে পারেনf(x)=(...)

  8. টার্নারি অপারেটরটি ব্যবহার করুন এটি যদি-তারপরে-অন্য কোনও নির্মাণের জন্য একক-প্রকাশের জন্য স্পেস-সেভার হতে পারে। ক্যাভেটস: অন্য কয়েকটি ভাষায় সম্ভব হওয়ার পরেও আপনি জুলিয়ায় কোলনের পরে অংশটি বাদ দিতে পারবেন না। এছাড়াও, অপারেটর জুলিয়ায় প্রকাশের স্তরের, তাই আপনি কোডের পুরো ব্লকের শর্তসাপেক্ষ কার্যকর করার জন্য এটি ব্যবহার করতে পারবেন না।
    if x<10 then true else false endবনাম
    x<10?true:false


3
পৃথিবীতে কীভাবে জুলিয়ার সাথে কিছুটা নির্দিষ্ট "টার্নারি অপারেটর ব্যবহার করা হয়"? এটি প্রতিটি ভাষার সাথে এটি প্রাসঙ্গিক।
পিটার টেলর

5
এটি এটি যে এটি প্রাসঙ্গিক। অনেক ভাষায় মানচিত্র, বেনামে বা বিশুদ্ধ ফাংশন, যে কোনও / সকলের জন্য একরকম শর্টহ্যান্ড, সংশ্লেষিত ক্রিয়াকলাপ ইত্যাদি রয়েছে If ।
জোনাথন ভ্যান মাত্রে

3
গোশ, শুরুর জন্য কেবলমাত্র সমস্ত কার্যকরী, যেখানে সমস্ত কিছুই একটি মান দেয় যাতে একটি ত্রৈমাসিক অপ্রয়োজনীয় হয়ে পড়ে red আপনার যদি নির্দিষ্ট উদাহরণ থাকতেই পারে: গো, হাস্কেল, স্কেলা, লুয়া, ভিবি, প্রোলগ, পিএল / এসকিউএল ... এমনকি পাইথনও অনেক সংস্করণের জন্য নয়। যার কাছাকাছি-ডজন ডজন ভাষাগুলির টিপসগুলির থার্ডারি অপারেটরের উল্লেখ রয়েছে তার কোনও কারণ কি আপনি কেবল খনিতে প্রাদেশিক হওয়ার জন্য বেছে নিয়েছেন?
জোনাথন ভ্যান মাত্রে

3
ঠিক আছে, আরে, অন্তত আপনি একটি সমান সুযোগের কার্মুডজিয়ন। ヘ ( ̄ ー  ̄ ヘ)
জোনাথন ভান মাত্রে

1
আমি পরামর্শ টিপ 3 সামঞ্জস্য করতে পারেন? ম্যাপ্রেডস ম্যাপফোল্ডল বা ম্যাপফোল্ডারের চেয়ে লম্বা এবং বাস্তবায়নের উপর নির্ভর করে বিভিন্ন আচরণ করতে পারে ing ম্যাপফোল্ডল এবং ম্যাপফোল্ডারটি বাম- এবং ডান-সহযোগী (যথাক্রমে) ধারাবাহিকভাবে হয় এবং এটি আরও ভাল পছন্দ। এটি হ্রাস করতে আরও সাধারণভাবে প্রযোজ্য (ভাঁজ বা ফোল্ডার ব্যবহার করুন)।
গ্লেন ও

9

ফাংশন ওভার নিখরচায়

এটি অন্যান্য ভাষায়ও সম্ভব, তবে সাধারণত সোজা পদ্ধতির চেয়ে দীর্ঘ হয়। যাইহোক, জুলিয়া এর unary এবং বাইনারি অপারেটরদের নতুন সংজ্ঞায়িত করার ক্ষমতা এটিকে বেশ আভাস দেয়।

উদাহরণস্বরূপ, 1 থেকে 10 পর্যন্ত প্রাকৃতিক সংখ্যার জন্য সংযোজন, বিয়োগ, গুণ এবং বিভাগ সারণি তৈরি করতে, কেউ ব্যবহার করতে পারে

[x|y for x=1:10,y=1:10,| =(+,-,*,÷)]

যা redefines বাইনারি অপারেটর |হিসাবে +, -, *এবং ÷, তারপর নির্ণয় x|yপ্রতিটি অপারেশন জন্য এবং xএবং yআকাঙ্ক্ষিত রেঞ্জ।

এটি ইউনারি অপারেটরদের জন্যও কাজ করে। উদাহরণস্বরূপ, জটিল সংখ্যার 1 + 2i , 3-4i , -5 + 6i এবং -7-8i গণনা করতে , তাদের নেতিবাচক, তাদের জটিল সংযোগগুলি এবং তাদের গুণক বিপরীতগুলি ব্যবহার করতে পারে

[~x for~=(+,-,conj,inv),x=(1+2im,3-4im,-5+6im,-7-8im)]

যা redefines ইউনারী অপারেটর ~হিসাবে +, -, conjএবং inv, তারপর নির্ণয় ~xমোটেই কাম্য জটিল সংখ্যার জন্য।

প্রকৃত প্রতিযোগিতায় উদাহরণ


6
  1. কীওয়ার্ডগুলি কখনও কখনও স্থান বা সেমিকোলনের প্রয়োজন ছাড়াই অবিলম্বে ধ্রুবকগুলিকে অনুসরণ করতে পারে। উদাহরণ স্বরূপ:

    n->(for i=1:n n-=1end;n)

    1এবং এর মধ্যে কোনও জায়গার অভাব নোট করুন end। এটি endনিকটতম পেরেনের পরে ঘটার ক্ষেত্রেও সত্য )end

  2. কোনও অপারেটর বা ওভারলোডিংয়ের ÷পরিবর্তে পূর্ণসংখ্যা বিভাগ সম্পাদন করুন div()। নোট করুন যেটি ÷ইউটিএফ -8 এ 2 বাইটের মূল্যবান।

  3. যখনই সম্ভব সম্ভব না হয়ে ব্যবহার করুন vec()বা A[:](কিছু অ্যারের জন্য A) reshape()

  4. চ্যালেঞ্জ বিধিগুলিতে অনুমোদিত হওয়ার সময় পূর্ণ প্রোগ্রামের চেয়ে ফাংশন তৈরি করুন। স্টিডিন থেকে পড়ে ভেরিয়েবলগুলি সংজ্ঞায়িত করার পরিবর্তে কোনও ফাংশন সংজ্ঞায়িত করা কম যা ইনপুট গ্রহণ করে। উদাহরণ স্বরূপ:

    n->(n^2-1)
    n=read(STDIN,Int);n^2-1
  5. ভেরিয়েবলগুলি কোনও ফাংশনে যুক্তির ভিতরে বাড়ানো যায়। উদাহরণস্বরূপ, নিম্নোক্ত আমার উত্তর করার খুঁজুন পরবর্তী 1-বিরল বাইনারি সংখ্যাকে চ্যালেঞ্জ:

    n->(while contains(bin(n+=1),"11")end;n)

    এটি nলুপের ভিতরে বাড়ানোর চেয়ে কম ।


6
  1. টাইপ করবেন নাreturn f(x)=x+4 তবে এর চেয়ে স্বল্প f(x)=return x+4। জুলিয়া সর্বদা সর্বশেষ বিবৃতিটির ফলাফল প্রদান করে।
  2. এর পরিবর্তে = ব্যবহার করুন[x for x in 1:4]এর চেয়ে 3 টি অক্ষর দীর্ঘ, তবে সমান[x for x=1:4]

5

সম্প্রচার ফাংশন কলগুলি ব্যবহার করুন।

জুলিয়া ০.০ তে পরিচয় করিয়ে দেওয়া। এটি মানচিত্রের মতো, তবে কম অক্ষর ব্যবহার করে এবং এর তর্কগুলি নিয়ে সম্প্রচার আচরণ করে - যার অর্থ আপনি জিনিসগুলি মোকাবেলায় কম ল্যাম্বডা লিখতে পারেন।

বরং:

  • map(f,x) -- 8 অক্ষর.
  • f.(x) - 5 টি অক্ষর

এখনও ভাল:

  • map(a->g(a,y),x) - 16 অক্ষর
  • g.(x,[y]) - 9 টি অক্ষর
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.