নিমে গল্ফ করার টিপস


11

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

দয়া করে উত্তর প্রতি একটি টিপ পোস্ট করুন।

উত্তর:


7

নমনীয় কল সিনট্যাক্স

কল সিনট্যাক্স ফাংশন করার সময় নিম বেশ নমনীয়। উদাহরণস্বরূপ, এখানে একটি যুক্তি দিয়ে কোনও ফাংশন কল করার কিছু উপায় রয়েছে:

ord(c)
ord c
c.ord

এবং দুটি যুক্তি সহ একটি ফাংশন কল করার উপায়:

max(a,b)
a.max(b)
a.max b

আপনার পরিস্থিতির জন্য সঠিকভাবে কাজ করে এমন গল্ফিয়াস্ট সংস্করণ চয়ন করুন, বিশেষত প্রাধান্য সম্পর্কে। উদাহরণস্বরূপ, তুলনা করুন:

abs(n)+2
n.abs+2
(abs n)+2

উল্টোদিকে:

abs(n+2)
(n+2).abs
abs n+2

মনে রাখবেন যে max a,bএমনকি (কখনও কখনও) কাজ করে।
তামা

7

futureমডিউলটি ব্যবহার করুন

futureLambdas এবং তালিকা comprehensions: মডিউল দুটি প্রধান বাইট সংরক্ষণ বৈশিষ্ট্য ধারণ করে। ল্যাম্বডাস অত্যন্ত দরকারী।

উদাহরণস্বরূপ, এটি:

proc f(s:any):any=s&", world!"

এটি সংক্ষিপ্ত করা যেতে পারে:

import future
s=>s&", world!"

যা একটি বাইট সংরক্ষণ করে। দ্রষ্টব্য, তবে, সেই ল্যাম্বডাসগুলি প্যারামিটার তালিকার বাইরে ব্যবহার করা যাবে না - সুতরাং আপনার কোডটি পরীক্ষা করতে আপনাকে এই জাতীয় কিছু করতে হবে:

import future
proc test(f: string -> string) = echo f "Hello"
test(s=>s&", world!")

পাশাপাশি, তালিকা বোঝারগুলি futureমডিউলটির সাথে ব্যবহার করা যেতে পারে । উদাহরণস্বরূপ, এই কোডটি @[...]4 টি দ্বারা 100 টিরও কম বিভক্ত সমস্ত স্কোয়ারের একটি সিক ( ) প্রিন্ট করে:

import future
echo lc[x*x|(x<-1..9,x*x mod 4==0),int]

সুন্দর তুলনার জন্য এটি লক্ষ্য করা উচিত যে আপনি কখনও কখনও anyপরিবর্তে ব্যবহার করতে পারেন string(আমি ধরে নিচ্ছি আপনি দীর্ঘতম টাইপটির নামটি বেছে নিয়েছেন) তবে এটি এখনও নির্বিশেষে সংরক্ষণ করে।
Sp3000

@ Sp3000 আমি জানতাম না আপনি ব্যবহার করতে পারবেন any, টিপটির জন্য ধন্যবাদ! আপনার উত্তর হিসাবে পোস্ট করা উচিত।
তামার

আরও ভাল তুলনার জন্য আপনি একটি proc(s:any):any=s&", world!"<space>fproc
বেনামের

6

স্বাক্ষরযুক্ত অপারেটর

Nonnegative পূর্ণসংখ্যার সাথে কাজ করার সময়, কখনও না স্বাক্ষরযুক্ত অপারেটরগুলি ব্যবহার করা ভাল। বিশেষ করে, সম্ভব হলে, ব্যবহার /%এবং %%পরিবর্তে divএবং mod

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