অক্টোবায় একটি বেনামী ফাংশন ব্যবহার করে কীভাবে কোনও ভেক্টরে উপাদানগুলি অদলবদল করবেন?


15

ভেক্টর / ম্যাট্রিক্সে দুটি উপাদান অদল বদল করা অক্টাভেতে খুব সহজ:

x='abcde';
x([4,1])=x([1,4])
x = 
   dbcae

দুর্ভাগ্যক্রমে, আমি বেনামে ফাংশনটির ভিতরে এটি করার উপায় খুঁজে পাইনি। নীচের ফাংশনটি সিন্টেক্সিকভাবে সঠিক হলেও এটি কেবল দুটি ভেটরকেই বদলে দেয় যা পুরো xভেক্টরকে নয়:

f=@(x)(x([4,1])=x([1,4]))
f(x)
ans = 
     ad

গল্ফ উপায়ে বেনাম ফাংশনগুলি ব্যবহার করে কাঙ্ক্ষিত আচরণ অর্জনের কোনও উপায় আছে? বেনামে ফাংশনটি ব্যবহার করে বেশ কয়েকটি উপাদান কীভাবে এইভাবে অদলবদল করা যায়?

আমি একটি ইনডেক্সিং ভেক্টর তৈরি করতে পারতাম : f=@(x)x([4,2,3,1,5])তবে গতিশীলভাবে এ জাতীয় ভেক্টর তৈরি করতে খুব বেশি বাইট লাগবে।


উত্তর:


21

যুক্তি তালিকা

f=@(x,y=x([4 1])=x([1 4]))x;

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


5
অপেক্ষা কি ? আমি কখনই জানতাম না অক্টোটাভে এটি সম্ভব ছিল। এটি অনেকগুলি নতুন কৌশল উন্মুক্ত করে ....
সানচিইস

4
কি মধ্যে ...?
স্টিভি গ্রিফিন

1
অষ্টাভ প্রশ্নের টিপস এ দয়া করে পোস্ট করুন! এই কৌশলটির সাহায্যে আপনি মূলত যুক্তি তালিকার সমস্ত কিছুই করতে পারেন, তাই আপনাকে আর কখনও 'পূর্ণ' এবং বেনামে ফাংশনগুলির মধ্যে চয়ন করার দরকার নেই। আমি বিষ্মিত.
Sanchises

3
অ্যামেজিং। বিটিডাব্লু, আপনি ;বাইট গণনার উদ্দেশ্যে ফাইনালটি সরাতে পারেন
লুইস মেন্ডো

সকলকে ধন্যবাদ। @ সানচিইজগুলি দেখে মনে হয় যে অষ্টাভ একটি চকচকে ভাষা। সতর্ক হোন! এটি টিপস যুক্ত করা হয়।
rahnema1

11

থাকা eval

f=@(x)eval"x([4 1])=x([1 4])"

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


মতলবতে প্রথম বন্ধনী বাদ দেওয়া যায় না:

f=@(x)eval('x([4 1])=x([1 4])')

9
কেবল পিপিসিগিতেই evalউত্তরটি রয়েছে :-)
স্টিভি গ্রিফিন

আপনি যোগ করতে চান এই অক্টেভ টিপস প্রশ্ন কিভাবে? forবেনামে ফাংশনটির ভিতরে লুপটি evalসেখানে প্রচুর বাইট সংরক্ষণ করে এবং সম্ভবত এটি অন্যান্য চ্যালেঞ্জগুলিতেও করতে পারে ,,,
স্টিভি গ্রিফিন

এটি কখনই গল্ফায়ার কিনা তা নিশ্চিত নয় তবে আমি মনে করি আপনি বেনামে ফাংশন ছাড়াই এটি করতে পারেন: s='x([1 4])=x([4 1])';eval(s)- আমি মনে করি আপনি ইতিমধ্যে ন্যূনতম চরিত্রের সাথে কোনও ক্রিয়াকলাপ তৈরি করে থাকলে এটি বেশিরভাগই আকর্ষণীয়।
ডেনিস জাহেরউদ্দিন


2
আমি মনে করি এই উত্তরটি কেবলমাত্র একমাত্র তফতর এবং মতলব উভয়ই ar
ব্যাটম্যান

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