আর , 132 96 94 88 84 75 73 53 51 বাইট
-20 জে.ডো এর বাস্তবায়নের জন্য ধন্যবাদ -2 জিউসেপিকে আরও ধন্যবাদ
function(x)x[order(colSums(sapply(x,intToBits)<1))]
আমার মূল পোস্ট:
pryr::f(rev(x[order(sapply(x,function(y)sum(as.double(intToBits(y)))))]))
এটি অনলাইন চেষ্টা করুন!
এই ফলাফলটিতে নামার আগে আমি বেশ কয়েকটি বিভিন্ন পদ্ধতি চেষ্টা করেছি।
ম্যাট্রিক্স পদ্ধতি: একটি দুটি কলাম ম্যাট্রিক্স তৈরি করেছে, একটি কলাম ইনপুট ভেক্টর দিয়ে, বাইনারি উপস্থানের যোগফলগুলির মধ্যে একটি, তারপরে আমি বাইনারিয়ের যোগফল অনুসারে বাছাই করেছি।
function(x){m=matrix(c(x,colSums(sapply(x,function(y){as.integer(intToBits(y))}))),nc=2,nr=length(x));m[order(m[,2],decreasing=T),]}
নন-ম্যাট্রিক্স: উপলব্ধ আমি ম্যাট্রিক্স ফাংশনটি টস করতে এবং পরিবর্তে বাইনারি মানগুলির একটি ভেক্টর তৈরি করতে, তাদের যোগফল, অর্ডার, এবং ইনপুট ভেক্টরটিকে পুনর্বিন্যাসের জন্য আদেশকৃত মানগুলি ব্যবহার করতে পারি।
function(x){m=colSums(sapply(x,function(y){as.integer(intToBits(y))}));x[order(m,decreasing=T)]}
ক্ষুদ্র পরিবর্তন
function(x){m=colSums(sapply(x,function(y)as.double(intToBits(y))));x[order(m,decreasing=T)]}
আরও মাইনর পরিবর্তনগুলি সেমিকোলন দ্বারা বিভক্ত দুটিয়ের পরিবর্তে পুরো বিষয়টিকে কোডের এক লাইনে রূপান্তর করে।
function(x)x[order(colSums(sapply(x,function(y)as.double(intToBits(y)))),decreasing=T)]
সমষ্টি পদ্ধতিcolSums
দ্বারা তৈরি বাইনারি ম্যাট্রিক্সের সাথে কলামগুলি যুক্ত করার পরিবর্তে sapply
, আমি sapply
"সমাপ্ত" হওয়ার আগে কলামে উপাদানগুলি যুক্ত করেছি ।
function(x)x[order(sapply(x,function(y)sum(as.double(intToBits(y)))),decreasing=T)]
আয় করার কমে আমি সত্যিই কমছে কমান করতে চেয়েছিলেন, কিন্তু আমার দিকে আর squawks যদি আমি কমান চেষ্টা decreasing
মধ্যে order
ফাংশন, যা অর্ডার কাঙ্ক্ষিত করতে প্রয়োজন ছিল order
বাড়ানোর ডিফল্ট, তারপর আমি মনে rev
একটি ভেক্টর বিপরীত ফাংশন। EUREKA !!! চূড়ান্ত সমাধান গত পরিবর্তন ছিল function
থেকে pryr::f
2 আরও বেশি বাইট সংরক্ষণ করতে
function(x)rev(x[order(sapply(x,function(y)sum(as.double(intToBits(y)))))])