স্থানান্তর এবং ডায়াগোনালস


21

এই চ্যালেঞ্জের জন্য, আপনার এমন একটি প্রোগ্রাম বা ফাংশন লিখতে হবে যা প্রদত্ত বর্গ ম্যাট্রিক্সের ডায়াগোনগুলি আউটপুট করে। তবে, আপনি যদি নিজের সমাধানের উত্স কোডের সারি এবং কলামগুলি স্থানান্তর করেন তবে এটি পরিবর্তে এমন একটি প্রোগ্রাম বা ফাংশনে পরিণত হবে যা ম্যাট্রিক্সের অ্যান্টিডিজোনালগুলি প্রদান করে। নির্দিষ্টকরণের জন্য পড়ুন ...

বিধি

  • আপনার সমাধানের উত্স কোডটি আপনার পছন্দসই একটি স্ট্যান্ডার্ড নিউলাইন (লাইনফিড, ক্যারেজ রিটার্ন, বা উভয়ের সংমিশ্রণ) দ্বারা পৃথক করা অক্ষরের 2D গ্রিড হিসাবে বিবেচিত হবে।
  • আপনার উত্স কোডের কোনও লাইন পূর্বেরটির চেয়ে বেশি দীর্ঘ হতে পারে। এখানে বৈধ বিন্যাসের কয়েকটি উদাহরণ রয়েছে:

    ###
    ###
    ###
    

    ########
    #######
    ###
    ###
    #
    

    এবং এখানে একটি অবৈধ বিন্যাসের উদাহরণ রয়েছে (তৃতীয় লাইনটি দ্বিতীয়টির চেয়ে দীর্ঘ):

    ######
    ####
    #####
    ###
    
  • আপনার দুটি সমাধান একে অপরের ট্রান্সপোজ হওয়া উচিত, এটি হ'ল সারি এবং কলামগুলি অদলবদল করে একে অপরের কাছ থেকে নেওয়া উচিত। এখানে দুটি বৈধ জোড় রয়েছে:

    abc
    def
    ghi
    

    adg
    beh
    cfi
    

    এবং

    print 10
    (~^_^)~
    foo
    bar
    !
    

    p(fb!
    r~oa
    i^or
    n_
    t^
     )
    1~
    0
    

    নোট করুন যে স্থানগুলি অন্য কোনও অক্ষরের মতো আচরণ করা হয়। বিশেষত, ট্র্যাকিং স্পেসগুলি তাৎপর্যপূর্ণ কারণ তারা ট্রান্সপোজের স্থানগুলি পিছনে নাও পারে।

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

  • প্রতিটি তির্যক উপরের বাম থেকে নীচে ডানদিকে চলে এবং সেগুলি উপরে থেকে নীচে অর্ডার করা উচিত।
  • প্রতিটি অ্যান্টিডিজোনাল নীচে থেকে বামে উপরের ডানদিকে চলে এবং সেগুলি উপরে থেকে নীচে অর্ডার করা উচিত।

স্কোরিং

যতটা সম্ভব "বর্গক্ষেত্র" সমাধানগুলিকে উত্সাহিত করার জন্য, প্রাথমিক স্কোর হ'ল সারি বা আপনার সমাধানের কলামগুলির সংখ্যা, যেটি বৃহত্তর । কম ভাল হয়। সলিউশনের অক্ষরের সংখ্যা দ্বারা টাইগুলি নষ্ট হয়ে গেছে , নতুন লাইনগুলি গণনা করছে না। আবার, কম ভাল হয়। উদাহরণ:

abcd
efg
h

এটি এবং এর ট্রান্সপোজের প্রাথমিক স্কোর 4 (যেমন 4 টি কলাম রয়েছে) এবং 8 -র একটি টাই-ব্রেকিং স্কোর (8 টি অ-নিউলাইন অক্ষর রয়েছে বলে) থাকবে। দয়া করে আপনার উত্তরের শিরোনামে উভয় মান উল্লেখ করুন।

পরীক্ষার মামলা

দুটি সমাধান দ্বারা সম্পাদিত প্রকৃত কাজটি এখানে প্রাথমিক চ্যালেঞ্জ হওয়া উচিত নয়, তবে আপনার সমাধানগুলি পরীক্ষা করতে আপনাকে এখানে দুটি উদাহরণ দেওয়া হয়েছে:

Input:
1 2 3
4 5 6
7 8 9
Diagonals:
3
2 6
1 5 9
4 8
7
Antidiagonals:
1
4 2
7 5 3
8 6
9

Input:
1 0 1 0
0 1 0 1
1 0 1 0
0 1 0 1
Diagonals:
0
1 1
0 0 0 
1 1 1 1
0 0 0
1 1
0
Antidiagonals:
1
0 0
1 1 1
0 0 0 0
1 1 1
0 0
1


আমি যেমন বুঝতে পেরেছিলাম যে স্যান্ডবক্স পোস্টটি এটির মধ্য দিয়ে যাওয়ার আগে আপনার দ্বারা ছিল, আজ সকালে এসইতে নামার আগে আমি বুঝতে পেরেছিলাম আপনি ইতিমধ্যে এটি পোস্ট করেছেন ... এই মুহুর্তে আমি ভাবতে শুরু করি যে আমি অবশ্যই মানসিক হতে পারি: পি
ইটিএইচ প্রোডাকশনস

উত্তর:


19

জাভাস্ক্রিপ্ট, স্কোর 20 14, ( 258 176 নন-লাইন অক্ষর)

///mmm()mu[=+r
///=.av=a,pr"=
///> p,>px=[ [
m=>//(yv()xp"]
m. ////.(=+]+)
map((////>y?u&
v,y)=>v//r]r:&
.map((u,x//[ur
)=>r[p=m.//p)
length-1-//],
x+y]=r[p]////
?r[p]+" "+u//
:u),r=[])&&r

এবং

///mmmv.)lx?:
///=.a,m=e+ru
///> pya>ny[)
m=>//()prg]p,
m. //(=([t=]r
map(//>(phr+=
(v,y//vu=-["[
)=>v.//,m1p ]
map((//x.-]")
u,x)=>r////+&
[p=x+y]////u&
=r[p]?r[p]//r
+" "+u:u),//
r=[])&&r

কোড স্নিপেট উদাহরণ:

f=

///mmm()mu[=+r
///=.av=a,pr"=
///> p,>px=[ [
m=>//(yv()xp"]
m. ////.(=+]+)
map((////>y?u&
v,y)=>v//r]r:&
.map((u,x//[ur
)=>r[p=m.//p)
length-1-//],
x+y]=r[p]////
?r[p]+" "+u//
:u),r=[])&&r

console.log(f([
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]))

এবং

f=

///mmmv.)lx?:
///=.a,m=e+ru
///> pya>ny[)
m=>//()prg]p,
m. //(=([t=]r
map(//>(phr+=
(v,y//vu=-["[
)=>v.//,m1p ]
map((//x.-]")
u,x)=>r////+&
[p=x+y]////u&
=r[p]?r[p]//r
+" "+u:u),//
r=[])&&r

console.log(f([
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]))


আপনি সিনট্যাক্স হাইলাইটিং সক্ষম করতে পারেন? <!-- language-all: lang-javascript -->প্রথম কোড ব্লকের আগে রাখুন ।
ক্যালকুলেটরফলাইন 16

8

এমএটিএল , 10 স্কোর (100 টি নিউ -লাইন অক্ষর)

%P!       
  Q&%     
  TXd!    
  %d      
     P!   
      "@% 
       Xz 
      %z  
         q
         !

10 টি অক্ষরের 10 টি লাইন রয়েছে (পিছনের স্থানগুলি নোট করুন)।

উপরের কোডটি কর্ণগুলি তৈরি করে। এটি অনলাইন চেষ্টা করুন!

স্থানান্তরিত সংস্করণটি অ্যান্টি-ডায়াগোনাল তৈরি করে। এটি অনলাইন চেষ্টা করুন!

ব্যাখ্যা

মনে রাখবেন যে

  • % এটি একটি মন্তব্য প্রতীক, যার ফলে বাকী রেখাকে উপেক্ষা করা হয়।

  • টু-চর ফাংশনগুলিকে এক এবং একটানা লাইনে Xdভাগ করা যায় না ।Xd

আসল কোড

মূল কোডটি, লাইনারিযুক্ত এবং মন্তব্য করা অংশ ছাড়াই

Q&TXd!P!"@Xzq!

যা নিম্নলিখিত হিসাবে কাজ করে:

Q      % Implicit input. Add 1 to each entry to make them positive
&      % This modifes default inputs/ouputs of next function, which is Xd
       % Specifically, it specifies 2 inputs and 1 ouput
T      % Push true
Xd     % Diagonals of matrix. With second input true, it gives all diagonals,
       % starting from below. The columns are arranged as columns of a matrix,
       % padding with zeros
!P!    % Flip horizontally. This is to produce the correct display order
"      % For each column
  @    %   Push current column
  Xz   %   Remove zeros
  q    %   Subtract 1
  !    %   Transpose into a row
       % Implicit end. Implicit display of stack contents

স্থানান্তরিত কোড

পরিবাহিত কোড, লাইনারিযুক্ত, হয়

P!QT&Xd!P!"@Xzq!

মূল কোডের তুলনায় যা নিম্নলিখিত দুটি পার্থক্য রয়েছে:

  • Tএবং &অদলবদল করা হয়। এটির কোনও প্রভাব নেই, কারণ Tএটি একটি আক্ষরিক, কোনও কার্য নয়, সুতরাং এটি &স্পেসিফিকেশনটিকে বাধা দেয় না ।
  • P! শুরুতে যোগ করা হয়।

যুক্ত কোডটি ইনপুট ম্যাট্রিক্সকে এমনভাবে পরিবর্তন করে যাতে পরিবর্তিত ম্যাট্রিক্সের কর্ণগুলি ইনপুটটির অ্যান্টি-ডায়াগোনাল হয়:

P      % Implicit input. Flip vertically
!      % Transpose

7

জেলি , স্কোর 7, 49 অ-নিউলাইন বাইট

তির্যক মুদ্রণ প্রোগ্রাম

......U
......Œ
......D
......ṙ
......L
......Ṛ
ŒDṙLṚUU

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

অ্যান্টি-ডায়াগোনাল-প্রিন্টিং প্রোগ্রাম

......Œ
......D
......ṙ
......L
......Ṛ
......U  
UŒDṙLṚU

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

পুরানো উত্তর (অর্ডারড আউটপুট), স্কোর 3, 6 অ-নিউলাইন বাইট

ডায়াগোনাল-প্রিন্টিং প্রোগ্রাম

UU
UŒ
ŒD

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

অ্যান্টি-ডায়াগোনাল প্রিন্টিং প্রোগ্রাম

UUŒ
UŒD

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


6

জেলি , স্কোর 4 (12 টি অক্ষর)

পূর্ববর্তী স্কোর: 5 (16 অক্ষর), 4 (16 অক্ষর)

মূল

ŒDṙṚ
D  ñ
ṙLñL

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

পক্ষান্তরিত করা

ŒDṙ
D L
ṙ ñ
ṚñL

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

পটভূমি

কর্ণ

বর্গক্ষেত্রের ম্যাট্রিক্সের তির্যকগুলি (শীর্ষ থেকে নীচে থেকে নীচে) পাওয়ার সহজ সরল পথটি নিম্নরূপ।

ŒDṙLṚ

একটি ইনপুট ম্যাট্রিক্স এম এর জন্য , প্রধান ত্রিভুজটি দিয়ে শুরু করে এবং উপরের দিকে অগ্রসর হওয়া এম এর কর্ণগুলি ŒDতালিকাভুক্ত করে ।

ইনপুট জন্য

1 2 3
4 5 6
7 8 9

এই ফলন

1 5 9
2 6
3
7
4 8

ṙLতারপরে এম এর দৈর্ঘ্যের সাথে গণনা Lকরে ফলাফলের দৈর্ঘ্য (এম) ইউনিটকে বাম দিকে ঘোরান ।

আমাদের উদাহরণস্বরূপ, দৈর্ঘ্য 3 এবং আমরা পাই

7
4 8
1 5 9
2 6
3

অবশেষে, ফিরে আসার ক্রমটিকে বিপরীত করে

3
2 6
1 5 9
4 8
7

আমাদের উদাহরণ ইনপুট জন্য।

এন্টি-কর্ণ

একই বিল্ডিং ব্লকগুলি স্কোয়ার ম্যাট্রিক্সের অ্যান্টি-ডায়াগোনালগুলি (আবার শীর্ষে, নীচে থেকে নীচে) পেতে ব্যবহার করা যেতে পারে।

ṚŒDṙL

একটি ইনপুট ম্যাট্রিক্স জন্য এম , প্রথম সারির অর্ডার reverses।

ইনপুট জন্য

1 2 3
4 5 6
7 8 9

এই ফলন

7 8 9
4 5 6
1 2 3

আগের মত, ŒDṙLফলাফলটির কর্ণগুলি (নীচে থেকে শীর্ষে) তৈরি করে।

আমাদের উদাহরণস্বরূপ, এই ফিরে আসে

1
4 2
7 5 3
8 6
9

পছন্দসই হিসাবে

কিভাবে এটা কাজ করে

জেলিতে, প্রতিটি লাইন একটি লিঙ্ক (ফাংশন) সংজ্ঞায়িত করে । বিশেষত, শেষ লাইনটি মূল লিঙ্কটি সংজ্ঞায়িত করে , যা প্রোগ্রাম শুরু হওয়ার পরে কার্যকর করা হয়।

অন্যান্য লিঙ্কগুলি কল করতে হবে। এই উত্তরটি ব্যবহার করে ñ, যা নীচের লিঙ্কটি dyadically কার্যকর করে। ñচারপাশে মোড়ানো, সুতরাং যখন এটি মূল লিঙ্ক থেকে কল করা হবে, এটি প্রথম লাইনে লিঙ্কটি কার্যকর করে।

মূল

মূল লিঙ্ক

ṙLñL

একটি ইনপুট ম্যাট্রিক্স এম গ্রহণ করে , এর দৈর্ঘ্যটি তার সাথে ভাগ করে L, তারপরে ইনপুট দৈর্ঘ্য (এম) ইউনিটগুলি বাম দিকে ঘোরান (নোট করুন যে এটি এম পরিবর্তন করে না ), এবং শেষ পর্যন্ত ফলাফল ( এম ) এবং দৈর্ঘ্যের সাথে প্রথম লিঙ্কটি কল করে ( এম) যুক্তি হিসাবে as

প্রথম লিঙ্ক

ŒDṙṚ

এম এর ত্রিভুজগুলি ŒD(পূর্ববর্তী বিভাগে দেখা যায়) সাথে গণনা করে , ফলাফল দৈর্ঘ্য (এম) ইউনিটগুলি বাম দিকে ঘোরান , তারপরে ফলাফলের ক্রমটিকে বিপরীত করে

দ্বিতীয় লিঙ্কটি কখনই ডাকা হয় না।

পক্ষান্তরিত করা

মূল লিঙ্ক

 ṚñL

একটি ইনপুট ম্যাট্রিক্স এম নেয় এবং এর বিপরীতের সাথে গণনা করে । এরপরে এটি এম এর দৈর্ঘ্যের সাথে গণনা করে Lএবং যুক্তিকে বিপরীত (এম) এবং দৈর্ঘ্য (এম) সহ প্রথম লিঙ্ককে কল করে ।

প্রথম লিঙ্ক

ŒDṙ

তারপরে বিপরীত (এম) এর ত্রিভুজগুলি (ŒD পূর্ববর্তী বিভাগে দেখা যায় ) সাথে গণনা করে এবং শেষ পর্যন্ত ফলাফলের দৈর্ঘ্য (এম) ইউনিটগুলি বাম দিকে ঘোরান

বাকি লিঙ্কগুলি কখনই ডাকা হয় না।


5

আর, স্কোর 14 13 11 ( 99 95 নন-লাইন অক্ষর)

স্কোর উন্নত করার জন্য @ জিউসেপ্পকে ধন্যবাদ 1. দ্বারা ট্রান্সপোজিশনে রিডানড্যানসিস ব্যবহার করে কয়েকটি অক্ষর ছাঁটাই। নন-গল্ফিং ভাষার পক্ষে বর্তমানে সেরা স্কোর!

######`,scr
`::`(#:fpoo
pryr,#:)llw
f)(###`(i((
split (#tmm
p,col(p#())
)+row#r#m-)
(p)))#y#,#)
######r

এবং স্থানান্তরিত:

#`pfsp)(#
#:r)p,+p#
#:y(lcr)#
#`r#ioo)#
#(,#tlw)#
#### (###
`::`(pryr
,f)(####
split(m,
col(m)-#
row(m)))

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


1
row(m)+col(m)অ্যান্টি-ডায়াগোনালের জন্য কম।
জিউসেপে

@ জিউসেপ অবশ্যই, ধন্যবাদ! এখনই সম্পাদিত।
rturnbull

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