আমাদের পচনের সারিবদ্ধ করুন


16

এই চ্যালেঞ্জের মধ্যে আমি আপনাকে একটি বর্গ ম্যাট্রিক্সের কিউআর পচনের সন্ধান করতে বলব। ম্যাট্রিক্স এর কিউআর ক্ষয় দুটি ম্যাট্রিক্স কিউ এবং আর যেমন এ = কিউআর । বিশেষত আমরা কিউকে একটি অর্থোগোনাল ম্যাট্রিক্স হওয়ার জন্য সন্ধান করছি (এটি হল কিউ টি কিউ = কিউকিউ টি = আমি যেখানে আমি গুণক পরিচয় এবং টি হ'ল ট্রান্সপোজ) এবং আর একটি উচ্চতর ত্রিভুজাকার ম্যাট্রিক্স হতে হবে (এর তির্যকের নীচে প্রতিটি মান অবশ্যই হবে) শূন্য হতে হবে)।

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

আপনার ফলাফল ম্যাট্রিকের উপাদানগুলি ম্যাট্রিক্সের প্রতিটি প্রবেশের জন্য একটি প্রকৃত উত্তরের দুটি দশমিক জায়গার মধ্যে হওয়া উচিত।

এটি একটি প্রতিযোগিতা তাই কম বাইটের সাথে আরও ভাল স্কোর হওয়ার সাথে উত্তরগুলি স্কোর করা হবে।


পরীক্ষার কেস

এগুলি কেবলমাত্র সম্ভাব্য আউটপুট, আপনার আউটপুটগুলি বৈধ হওয়া পর্যন্ত এই সমস্তটির সাথে মেলে না।

0 0 0     1 0 0   0 0 0
0 0 0 ->  0 1 0   0 0 0
0 0 0     0 0 1 , 0 0 0

1 0 0     1 0 0   1 0 0
0 1 0 ->  0 1 0   0 1 0
0 0 1     0 0 1 , 0 0 1

1 2 3     1 0 0   1 2 3
0 3 1 ->  0 1 0   0 3 1
0 0 8     0 0 1 , 0 0 8

0 0 1     0 0 1   1 1 1
0 1 0 ->  0 1 0   0 1 0
1 1 1     1 0 0 , 0 0 1

0 0 0 0 1     0 0 0 0 1   1 0 0 0 1
0 0 0 1 0     0 0 0 1 0   0 1 1 1 0
0 0 1 0 0 ->  0 0 1 0 0   0 0 1 0 0
0 1 1 1 0     0 1 0 0 0   0 0 0 1 0
1 0 0 0 1     1 0 0 0 0 , 0 0 0 0 1

মন্তব্যগুলি বর্ধিত আলোচনার জন্য নয়; এই কথোপকথন চ্যাটে সরানো হয়েছে ।
ডেনিস

উত্তর:


5

জুলিয়া, 2 বাইট

qr

ফাংশন qrএকটি বর্গাকার ম্যাট্রিক্সের গ্রহণ এবং একটি ফেরৎ Tupleম্যাট্রিক্সের: প্রশ্ন এবং আর

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


4
তোমাকে দেখে ভালো লাগলো! এটি এর থেকে কোনও ছোট হয় না :-)
লুইস মেন্ডো

আমি জানতাম আপনি শীঘ্রই ফিরে আসবেন। ফিরে আসার জন্য স্বাগতম! কী বিল্ট-ইন
বিটিডব্লিউ

5

অক্টাভা , 19 বাইট

@(x)[[q,r]=qr(x),r]

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

আমার প্রথম অক্টাভে উত্তর \ o /

qrঅন্যান্য ভাষায় অক্টাভের বেশ কয়েকটি বিকল্প রয়েছে যা Q এবং উভয়ই ফিরিয়ে দেয় R : QRDecomposition(ম্যাথমেটিকা), matqr(প্যারি / জিপি) 128!:0- - যদি আমি সঠিকভাবে স্মরণ করি - (জে), qr(আর) ...


সুতরাং… আপনি যে জে সমাধান পোস্ট করবেন বা আমি করব?
অ্যাডম

@ অ্যাডাম আমি করব না আপনি চাইলে এগিয়ে যান এবং পোস্ট করুন।
মিঃ এক্সকোডার

কেন 128!:0অল-শূন্য ম্যাট্রিক্সে কাজ করে না
অ্যাডাম


@ লুইস মেন্ডো ঠিক করার জন্য অনেক ধন্যবাদ!
মিঃ এক্সকডার


3

আর , 38 37 বাইট

pryr::f(list(qr.R(q<-qr(m)),qr.Q(q)))

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


1
তোমার সেই জায়গার দরকার নেই ...? pryr::f(list(qr.R(q<-qr(m)),qr.R(q)))
মিঃ এক্সকোডার


@ মিঃ এক্সকোডার ধন্যবাদ!
rturnbull

@ অ্যাডাম ধন্যবাদ, আমি একটি বোকা টাইপ করেছি। এখনই স্থির।
rturnbull


1

পাইথন 2, 329 324 বাইট

import fractions
I=lambda v,w:sum(a*b for a,b in zip(v,w))
def f(A):
 A,U=[map(fractions.Fraction,x)for x in zip(*A)],[]
 for a in A:
    u=a
    for v in U:u=[x-y*I(v,a)/I(v,v)for x,y in zip(u,v)]
    U.append(u)
 Q=[[a/I(u,u)**.5 for a in u]for u in U];return zip(*Q),[[I(e,a)*(i>=j)for i,a in enumerate(A)]for j,e in enumerate(Q)]

সঠিক আউটপুট নিশ্চিত করতে আমাদের অবশ্যই ভগ্নাংশ ব্যবহার করতে হবে, দেখুন https://en.wikedia.org/wiki/Gram%E2%80%93 সংখ্যাসূচক

ব্যবহৃত ইন্ডেন্টেশন:

  1. 1 স্থান
  2. 1 ট্যাব

2
যখন ইন্টেন্টেড থাকে আপনি ;আলাদা লাইন ব্যবহার করে বাইটস সংরক্ষণ করতে পারেন । আপনি প্রায়শই লাইন বিরতির পরেও যেতে পারেন :। আমি এগুলি নিয়ে ঘুরে দেখার পরামর্শ দেব কারণ এই কৌশলটি ব্যবহার করে এই উত্তরটি সংক্ষিপ্ততর হতে পারে এমন কয়েকটি জায়গা আমি দেখতে পাচ্ছি।
পোস্ট রক গারফ হান্টার

@ হুইট উইজার্ড ধন্যবাদ :)
টাইলো

1
দুর্ভাগ্যক্রমে, এটি নাল সারি সহ ম্যাট্রিকগুলির জন্য কাজ করবে না।
ডেনিস

0

অজগর সহ পাইথন, ২৮ বাইট

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