বিমান উড়িয়ে


10

ঘা-আপ বীজগাণিতিক জ্যামিতি মধ্যে একটি শক্তিশালী হাতিয়ার। এটা তোলে অপসারণের পারবেন ব্যতিক্রমী-বিন্দু থেকে বীজগাণিতিক সেট যখন তাদের গঠন বাকি সংরক্ষণের।

যদি আপনি যে কারও সাথে চিন্তিত না হন তবে তার সাথে পরিচিত না হন, আসল গণনা বুঝতে অসুবিধা হয় না (নীচে দেখুন)।

নীচে আমরা পয়েন্টটির ধাক্কা বিবেচনা করছি(0,0)2D তে একটি বীজগণিত বক্ররেখা। 2 ডি-তে একটি বীজগণিত বক্ররেখা দুটি বহনযোগ্য (যেমন উদ্বোধনের শূন্য-লোকাস দ্বারা দেওয়া হয়)পি(এক্স,Y)=এক্স2+ +Y2-1 ইউনিট বৃত্তের জন্য, বা পি(এক্স,Y)=Y-এক্স2একটি প্যারাবোলা জন্য)। বিস্ফোরণ যে বক্ররেখার (ইন(0,0)) দুটি বহুভিত্তিক দেওয়া হয় R,গুলিনীচে সংজ্ঞায়িত। উভয়R এবং গুলি বর্ণনা করুন পি এ (সম্ভাব্য) এককতার সাথে (0,0) সরানো হয়েছে।

চ্যালেঞ্জ

কিছু বহুবচন দেওয়া পি, অনুসন্ধান R এবং গুলি নীচে সংজ্ঞায়িত।

সংজ্ঞা

প্রথমে নোট করুন যে আমি এখানে যা বলি তা সরল করে দেওয়া হয়েছে, এবং আসল সংজ্ঞাগুলির সাথে সম্পূর্ণ মিল নেই।

একটি বহুপদী দেওয়া পি দুটি পরিবর্তনশীল মধ্যে এক্স,Yবিস্ফোরণ দুই polynomials দেওয়া হয়R,গুলি আবার দুটি ভেরিয়েবলে প্রতিটি।

পেতে R আমরা প্রথম সংজ্ঞায়িত আর(এক্স,বনাম): =পি(এক্স,বনামএক্স)। তারপরআর(এক্স,বনাম) সম্ভবত এর একাধিক এক্সঅর্থাৎ আর(এক্স,বনাম)=এক্সএনR(এক্স,বনাম) কিছুর জন্য এন কোথায় এক্স বিভক্ত হয় না R(এক্স,বনাম)। তারপরR(এক্স,বনাম) মূলত বিভাগের পরে যা রয়ে যায়।

অন্যান্য বহুভুজটি হুবহু একইভাবে সংজ্ঞায়িত করা হয় তবে আমরা ভেরিয়েবলগুলি স্যুইচ করি: প্রথম লিখুন এস(তোমার দর্শন লগ করা,Y): =পি(তোমার দর্শন লগ করাY,Y)। তারপরগুলি যেমন সংজ্ঞায়িত করা হয় এস(তোমার দর্শন লগ করা,Y)=Yমিগুলি(তোমার দর্শন লগ করা,Y) কিছুর জন্য মি কোথায় Y বিভক্ত হয় না গুলি(তোমার দর্শন লগ করা,Y)

যাতে এটি আরও স্পষ্টতর হয় নীচে বিবেচনা করুন

উদাহরণ

এর শূন্য লোকস দ্বারা প্রদত্ত বক্ররেখা বিবেচনা করুন পি(এক্স,Y)=Y2-(1+ +এক্স)এক্স2। (এটিতে একাকীত্ব রয়েছে(0,0)কারণ এখানে কোন ভাল সংজ্ঞায়িত স্পর্শক নেই। )

তারপরে আমরা খুঁজে পাই

আর(এক্স,বনাম)=পি(এক্স,বনামএক্স)=বনাম2এক্স2-(1+ +এক্স)এক্স2=এক্স2(বনাম2-1-এক্স)

তারপর R(এক্স,বনাম)=বনাম2-1-এক্স প্রথম বহুপদী

একভাবে

এস(তোমার দর্শন লগ করা,Y)=পি(তোমার দর্শন লগ করাY,Y)=Y2-(1+ +তোমার দর্শন লগ করাY)তোমার দর্শন লগ করা2Y2=Y2(1-(1+ +তোমার দর্শন লগ করাY)তোমার দর্শন লগ করা2)

তারপর গুলি(তোমার দর্শন লগ করা,Y)=1-(1+ +তোমার দর্শন লগ করাY)তোমার দর্শন লগ করা2=1-তোমার দর্শন লগ করা2+ +তোমার দর্শন লগ করা3Y

Rগুলি

ইনপুট / আউটপুট ফর্ম্যাট

( এখানেও একইভাবে ।) বহুভুজগুলি (m+1) x (n+1)মেট্রিকেস / পূর্ণসংখ্য সহগগুলির তালিকাগুলির তালিকা হিসাবে উপস্থাপিত হয় , উদাহরণস্বরূপ সহগের শর্তগুলির নীচে তাদের অবস্থান দেওয়া হয়:

[   1 * 1,   1 * x,   1 * x^2,   1 * x^3,  ... , 1 * x^n ]
[   y * 1,   y * x,   y * x^2,   y * x^4,  ... , y * x^n ]
[   ...  ,   ...   ,   ...   ,    ...   ,  ... ,   ...   ]
[ y^m * 1, y^m * x, y^m * x^2, y^m * x^3 , ..., y^m * x^n]

সুতরাং একটি উপবৃত্ত 0 = x^2 + 2y^2 -1হিসাবে প্রতিনিধিত্ব করা হবে

[[-1, 0, 1],
 [ 0, 0, 0],
 [ 2, 0, 0]]

আপনি পছন্দ করেন তাহলে আপনি অদলবদল করতে পারেন xএবং y। প্রতিটি দিক দিয়ে আপনার পিছনে শূন্যগুলি (যেমন উচ্চতর ডিগ্রীর সহগগুলি যা কেবল শূন্য) এর অনুমতি দেওয়া হয়। যদি এটি আরও সুবিধাজনক হয় তবে আপনার আটকে থাকা অ্যারেও (আয়তক্ষেত্রের পরিবর্তে) থাকতে পারে যেমন সমস্ত উপ-সাব-অ্যারেতে কোনও পিছনের জিরো থাকে না।

  • আউটপুট ফর্ম্যাট ইনপুট ফর্ম্যাট হিসাবে একই।

উদাহরণ

আরও যোগ করা হবে ( আরও উত্স )

Trifolium
p(x,y) = (x^2 + y^2)^2 - (x^3 - 3xy^2)
r(x,v) = v^4  x + 2  v^2  x + x + 3  v^2 - 1
s(u,y) = u^4  y + 2  u^2  y + y - u^3 + 3  u

পি R গুলি

Descartes Folium
p(x,y) = y^3 - 3xy + x^3
r(x,v) = v^3  x + x - 3v
s(u,y) = u^3  y + y - 3u

পি R গুলি

উদাহরণগুলি W / O ছবি

Trifolium:
p:
[[0,0,0,-1,1],
 [0,0,0, 0,0],
 [0,3,2, 0,0],
 [0,0,0, 0,0],
 [1,0,0, 0,0]]
r: (using the "down" dimension for v instead of y)
[[-1,1],
 [ 0,0],
 [ 3,2],
 [ 0,0],
 [ 0,1]]
s: (using the "right" dimension for u instead of x)
[[0,3,0,-1,0],
 [1,0,2, 0,1]]

Descartes Folium:
p:
[[0, 0,0,1],
 [0,-3,0,0],
 [0, 0,0,0],
 [1, 0,0,0]]
r:
[[ 0,1],
 [-3,0],
 [ 0,0],
 [ 0,1]]
s:
[[0,-3,0,0],
 [1, 0,0,1]]

Lemniscate:
p: 
[[0,0,-1,0,1],
 [0,0, 0,0,0],
 [1,0, 0,0,0]]
r:
[[-1,0,1],
 [ 0,0,0],
 [ 1,0,0]]
s:
[[1,0,-1,0,0],
 [0,0, 0,0,0],
 [0,0, 0,0,1]]

Powers:
p:
[[0,1,1,1,1]]

r:
[[1,1,1,1]]

s:
[[0,1,0,0,0],
 [0,0,1,0,0],
 [0,0,0,1,0],
 [0,0,0,0,1]]

7
এই শিরোনামটি অবশ্যই তা নয় যা আমি ভেবেছিলাম ...
নেতিবাচক সাত

প্রস্তাবিত 0+x+x^2+x^3+x^4
টেস্টকেস

এই টুইটটি যোগ করুন!
flawr

উত্তর:


5

পাইথন 3 + নম্পি, 165 134 বাইট

lambda p:(r(p),r(p.T).T)
from numpy import*
def r(p):w,l=where(p);s=w+l;n=min(s);o=zeros((len(p),max(s)-n+1));o[w,s-n]=p[w,l];return o

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

ফাংশনটি ইনপুট হিসাবে একটি numpy2D অ্যারে নেয় pএবং এর একটি টিপল দেয়(r,s) দুটি numpy2D অ্যারের ।

সমাধানটির ভাঙ্গন নিম্নরূপ। বহুবচন গণনা করার জন্যR, আমরা প্রতিটি পদ পুনরায় লিখি এক্সYআমি এর পি মধ্যে এক্স+ +আমি(Yএক্স)আমি, এবং এটি হয়ে যায় এক্স+ +আমিতোমার দর্শন লগ করাআমি ভিতরে পি(এক্স,তোমার দর্শন লগ করাএক্স)। সুতরাং আমরা ইনপুট পুনরুদ্ধার করতে পারেন(মি+ +1)×(এন+ +1) জরায়ু পি একটি মধ্যে (মি+ +1)×(মি+ +এন-1) জরায়ু ডি সংশ্লিষ্ট পি(এক্স,তোমার দর্শন লগ করাএক্স) সেট করে ডি[আমি,+ +আমি]=পি[আমি,]। তারপরে আমরা শুরুতে এবং শেষে অল-শূন্য কলামগুলি অপসারণ করিডি একটি হ্রাস সম্পাদন এবং আউটপুট ম্যাট্রিক্স পেতে আর জন্য R

গনা গুলি, আমরা কেবল অদলবদল করি এক্স এবং Y, একই প্রক্রিয়াটি পুনরাবৃত্তি করুন এবং তারপরে এগুলিকে আবার বদল করুন। এটি কম্পিউটিংয়ের সাথে মিলে যায়আর জন্য পিটি এবং তারপরে ফলাফলটি স্থানান্তর করে।

নিম্নলিখিত বর্ণহীন কোড উপরের গণনা প্রক্রিয়াটি দেখায়।

অব্যক্ত (বেসিক)

import numpy as np

def r(p):
    num_rows, num_cols = p.shape
    deg_mat = np.zeros((num_rows, num_rows + num_cols - 1))
    for i, row in enumerate(p):
        deg_mat[i, i:i+num_cols] = row
    non_zero_col_idx, = np.where(deg_mat.any(axis=0))
    return deg_mat[:,non_zero_col_idx.min():non_zero_col_idx.max()+1]

def rs(p):
    return r(p), r(p.T).T

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

সমাধানটির আরও উন্নতি ম্যাট্রিক্সের গণনা করে আর উপর ভিত্তি করে একটি একক পাস আর[আমি,+ +আমি-]=পি[আমি,], কোথায় =সর্বনিম্নপি[আমি,]0আমি+ +

অবহেলিত (উন্নত)

import numpy as np

def r(p):
    y_deg, x_deg = np.where(p)  # Retrieve degrees of y and x for non-zero elements in p
    total_deg = y_deg + x_deg
    min_total_deg = total_deg.min()
    max_total_deg = total_deg.max()
    out = np.zeros((p.shape[0], max_total_deg - min_total_deg + 1))
    out[y_deg, y_deg + x_deg - min_total_deg] = p[y_deg, x_deg]
    return out

def rs(p):
    return r(p), r(p.T).T

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


3

এপিএল (ডায়ালগ ইউনিকোড) , 38 37 বাইট

ডামি আক্ষরিকের+/∘⍴ জায়গায় ব্যবহার করে এনজিএনকে 1 বাইট সংরক্ষণ করা হয়েছে thanks0

⊢∘⍉\+/∘⍴{q↓⍨⊃⍸×∨/q←(-⍳≢⍉⍵)⊖⍺↑⍵}¨⊂,⊂∘⍉

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

(একটি ⎕ioসূচী উত্স সহ একটি ট্রেন 0 হিসাবে সেট করা)

বদ্ধ ডান যুক্তি

, সঙ্গে জড়িত

  • ⊂∘ ঘিরা

  • স্থানান্তরিত ডান যুক্তি

গুলি প্রাক্তন থেকে গণনা করা হয়, R পরের থেকে

¨ প্রতিটি

+/∘⍴{ ... } বাম যুক্তি দিয়ে নিম্নলিখিত ফাংশন সম্পাদন করুন

  • +/ সমষ্টি

      • ডান আর্গুমেন্টের আকার, যেমন সারি + কলাম পান

এবং সঠিক যুক্তি সংযুক্ত ম্যাট্রিক্সগুলির প্রতিটি হবে।

⍺↑⍵এবং বাম আর্গুমেন্টটি ডান আর্গুমেন্ট থেকে অনেকগুলি সারি নিন , যদি সারিগুলির ঘাটতি থাকে (যা এটি হবে কারণ সারি + কলাম> সারি), এটি পর্যাপ্ত 0s দিয়ে প্যাড করা হয়

প্রতিস্থাপনের গণনা বনামএক্স অথবা তোমার দর্শন লগ করাY জায়গায় Y অথবা এক্সতাদের সূচক দ্বারা কলামগুলি ঘোরানো দ্বারা সম্পন্ন করা হয় এবং যেহেতু 0 সে দ্বারা প্যাড করা হয়, তাই কলামগুলি কার্যকরভাবে 0 এর পছন্দসই পরিমাণ দ্বারা চাপিয়ে দেওয়া হয়।

দ্বারা কলামগুলি ঘোরান

  • ⍉⍵ পক্ষান্তরিত

  • সারিগুলি গণনা করুন, একসাথে, ≢⍉⍵কলামগুলির সংখ্যা পেয়েছে

  • পরিসর 0 .. গণনা -1

  • -অবহেলিত, অন্য দিকে ঘোরানো এবং এর জন্য ডিফল্ট হিসাবে চূড়ান্তভাবে 0 ¯1 ¯2 পাওয়া যায় ... - (গণনা -1), এটি প্রতিটি কলামে স্বয়ংক্রিয়ভাবে ভ্যাক্টরিজ করে যে 0-তম কলামটি 0 দ্বারা আবর্তিত হয়, 1-st বাই 1, ...

q← এটি ভেরিয়েবলকে বরাদ্দ করুন q

এখন সবচেয়ে বড় শক্তি দ্বারা বহুবর্ষকে বিভাজন করতে এক্স অথবা Y, শীর্ষস্থানীয় সমস্ত -0 টি সারি সরিয়ে ফেলতে হবে।

∨/ প্রতিটি সারি জুড়ে এলসিএম দ্বারা হ্রাস করুন, যদি সারিটি সমস্ত -0 হয় তবে এটি 0 দেয়, অন্যথায় এটি একটি ধনাত্মক সংখ্যা দেয়

×এর চিহ্ন, 00এবং ধনাত্মক সংখ্যা get পান → 1

সত্যের সূচকগুলি, অর্থাৎ 1 এর সূচকগুলি

প্রথম উপাদানটি চয়ন করুন, ⊃⍸কেবল প্রথম 1 এর সূচক পায়

q↓⍨অনেকগুলি সারি থেকে ড্রপগুলি qআবার শীর্ষস্থানীয় অল -0 টি সারি বাদ দেওয়ার জন্য সঠিক মান ফেরত দিতে ⎕io←0সহায়তা করে

(প্রস্থান প্রস্থান)

গুলি ইতিমধ্যে অর্জন করা হয়েছে R দ্বিতীয় মানটি এর মাধ্যমে স্থানান্তর করতে হবে ⊢∘⍉\


অন্যান্য পদ্ধতির নীচে তালিকাভুক্ত করা হয়েছে।

⍝(⊢∘⍉\+/∘⍴{q↓⍨⊃⍸×∨/q←(-⍳≢⍉⍵)⊖⍺↑⍵}¨⊂,⊂∘⍉)¨a
⍝(⊢∘⍉\∘⌽⍴{q↓⍨⊃⍸×∨/q←(-⍳⍺)⊖⍵↑⍨+/⍴⍵}¨⊂∘⍉,⊂)¨a
⍝(⊢∘⍉\⌽∘⍴{q↓⍨⊃⍸×∨/q←(-⍳⍺)⊖⍵↑⍨+/⍴⍵}¨⊂,⊂∘⍉)¨a
⍝(⊢∘⍉\0{q↓⍨⊃⍸×∨/q←(-⍳≢⍉⍵)⊖⍵↑⍨+/⍴⍵}¨⊂,⊂∘⍉)¨a
⍝(⊢∘⍉\+/∘⍴({⍵↓⍨⊃⍸×∨/⍵}(-∘⍳1⊃⊢∘⍴)⊖↑)¨⊂,⊂∘⍉)¨a
⍝(⊂∘⍉∘⊃@0⍴{q↓⍨⊃⍸×∨/q←(-⍳⍺)⊖⍵↑⍨+/⍴⍵}¨⊂∘⍉,⊂)¨a
⍝{⊢∘⍉\{q↓⍨⊃⍸×∨/q←(-⍳≢⍉⍵)⊖⍵↑⍨+/⍴⍵}¨⍵(⍉⍵)}¨a
⍝(⊢∘⍉\(({⍵↓⍨⊃⍸×∨/⍵}(-∘⍳1⊃⍴)⊖⊢↑⍨1⊥⍴)¨⊂,⊂∘⍉))¨a
⍝(0 1{⍉⍣⍺⊢q↓⍨⊃⍸×∨/q←(-⍳≢⍉⍵)⊖⍵↑⍨+/⍴⍵}¨⊂,⊂∘⍉)¨a
⍝{⊢∘⍉\{q[;⍸×∨\∨q←↑(,\0⍴⍨≢⍵),¨↓⍵]}¨⍵(⍉⍵)}¨a
⍝{⊢∘⍉\{q↓⍨1⍳⍨×∨/q←(-⍳≢⍉⍵)⊖⍵↑⍨+/⍴⍵}¨⍵(⍉⍵)}¨a
⍝(⊢∘⍉\(((⊢↓⍨1⍳⍨0≠∨/)(-∘⍳1⊃⍴)⊖⊢↑⍨1⊥⍴)¨⊂,⊂∘⍉))¨a
⍝{⊢∘⍉\{q[⍸×∨\∨/q←(-⍳≢⍉⍵)⊖⍵↑⍨+/⍴⍵;]}¨⍵(⍉⍵)}¨a
⍝{⊢∘⍉\{q↓⍨+/0=∨\∨/q←(-⍳≢⍉⍵)⊖⍵↑⍨+/⍴⍵}¨⍵(⍉⍵)}¨a
⍝{⊢∘⍉\{q↓⍨⌊/+⌿∧⍀0=q←(-⍳≢⍉⍵)⊖⍵↑⍨+/⍴⍵}¨⍵(⍉⍵)}¨a
⍝(⌽∘⍉¨1↓({⊖⍉q[⍸×∨\∨/q←(-⍳≢⍉⍵)⊖⍵↑⍨+/⍴⍵;]}\3/⊂))¨a
⍝{⊢∘⍉\{↑(↓q)/⍨∨∨/q←(-⍳≢⍉⍵)⊖⍵↑⍨+/⍴⍵}¨⍵(⍉⍵)}¨a
f←⊢∘⍉\⋄{f{q[⍸×∨\∨/q←(-⍳≢⍉⍵)⊖⍵↑⍨+/⍴⍵;]}¨f⍵⍵}¨a
⍝{1↓⌽∘⍉¨{⊖⍉q[⍸×∨\∨/q←(-⍳≢⍉⍵)⊖⍵↑⍨+/⍴⍵;]}\3/⊂⍵}¨a
⍝{f←{q[⍸×∨\∨/q←(-⍳≢⍉⍵)⊖⍵↑⍨+/⍴⍵;]}⋄(f⍵)(⍉f⍉⍵)}¨a
⍝{⊢∘⍉\{↑(↓q)/⍨∨\0≠∨/q←(-⍳≢⍉⍵)⊖⍵↑⍨+/⍴⍵}¨⍵(⍉⍵)}¨a
⍝{⊢∘⍉\{(0~⍨∊⍵)@(↓⍉(⊢-⌊/)@1+⍀⍉↑⍸0≠⍵)⊢0⍴⍨,⍨⌈/⍴⍵}¨⍵(⍉⍵)}¨a
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.