2 ডি বৈষম্য


29

উদ্দেশ্য

সংখ্যার গ্রিড দেওয়া, অসমতা পূরণ করুন।

অনুমিতি

গ্রিডে কলাম এবং সারিগুলির সংখ্যা সমান।
গ্রিডের সর্বাধিক আকার 12x12।
গ্রিডে কেবল 0-9 পূর্ণসংখ্যা থাকে।
আউটপুটটিতে একটি পেছনের নিউলাইন থাকতে পারে।
স্পেস এবং নিউলাইনগুলি সহ ইনপুটটি ঠিক নীচে লেখা রয়েছে written

উদাহরণ ইনপুট

4 2 3 1

6 2 3 1

6 9 2 1

0 2 1 6

উদাহরণ আউটপুট

4>2<3>1
^ " " "
6>2<3>1
" ^ v "
6<9>2>1
v v v ^
0<2>1<6

উদাহরণ ইনপুট (2)

1 2 3 4 5

5 4 3 2 1

0 0 0 3 2

3 2 0 0 0

2 1 3 1 5

উদাহরণ আউটপুট (2)

1<2<3<4<5
^ ^ " v v
5>4>3>2>1
v v v ^ ^
0=0=0<3>2
^ ^ " v v
3>2>0=0=0
v v ^ ^ ^
2>1<3>1<5

উদাহরণ ইনপুট (3)

8

উদাহরণ আউটপুট (3)

8

উদাহরণ ইনপুট (4)

0 0 0 0 0 0 0 0 0 0 0 0

0 1 1 1 1 1 1 1 1 1 1 0

0 1 2 3 4 5 6 7 8 9 1 0

0 1 3 9 8 7 6 5 4 8 1 0

0 1 4 8 9 8 7 6 5 7 1 0

0 1 5 7 8 9 9 7 6 6 1 0

0 1 6 6 7 9 9 8 7 5 1 0

0 1 7 5 6 7 8 9 8 4 1 0

0 1 8 4 5 6 7 8 9 3 1 0

0 1 9 8 7 6 5 4 3 2 1 0

0 1 1 1 1 1 1 1 1 1 1 0

0 0 0 0 0 0 0 0 0 0 0 0

উদাহরণ আউটপুট (4)

0=0=0=0=0=0=0=0=0=0=0=0
" ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ "
0<1=1=1=1=1=1=1=1=1=1>0
" " ^ ^ ^ ^ ^ ^ ^ ^ " "
0<1<2<3<4<5<6<7<8<9>1>0
" " ^ ^ ^ ^ " v v v " "
0<1<3<9>8>7>6>5>4<8>1>0
" " ^ v ^ ^ ^ ^ ^ v " "
0<1<4<8<9>8>7>6>5<7>1>0
" " ^ v v ^ ^ ^ ^ v " "
0<1<5<7<8<9=9>7>6=6>1>0
" " ^ v v " " ^ ^ v " "
0<1<6=6<7<9=9>8>7>5>1>0
" " ^ v v v v ^ ^ v " "
0<1<7>5<6<7<8<9>8>4>1>0
" " ^ v v v v v ^ v " "
0<1<8>4<5<6<7<8<9>3>1>0
" " ^ ^ ^ " v v v v " "
0<1<9>8>7>6>5>4>3>2>1>0
" " v v v v v v v v " "
0<1=1=1=1=1=1=1=1=1=1>0
" v v v v v v v v v v "
0=0=0=0=0=0=0=0=0=0=0=0

প্রাক্তন 2 টি সারি এবং কলাম সমান নয়।
জিওভেল

1
2-সংখ্যার নম্বর থাকবে?
ডাউনওয়েট

@ Vɪʜᴀɴ গ্রিডে কেবল 0-9 পূর্ণসংখ্যা থাকে।
ডেনিস

1
আমি ধরে নিয়েছি ইনপুটটির সংখ্যাযুক্ত রেখায় কোনও পিছনের জায়গা নেই। ফাঁকা লাইনে কোনও জায়গা আছে? আমি সম্পাদনা বোতাম টিপলে আমি দেখতে পাচ্ছি যে প্রতিটি ফাঁকা লাইনে 23 টি স্পেস রয়েছে উদাহরণস্বরূপ 4, অন্যান্য সমস্ত উদাহরণের জন্য শূন্য। তবে রেন্ডার করা পৃষ্ঠাটি এগুলি সমস্ত সরিয়ে ফেলবে, কমপক্ষে যখন আমি এটি কোনও টেক্সট সম্পাদকে চেক করার জন্য অনুলিপি করি ..
স্তর নদী সেন্ট

1
@ স্টিভভারলিল ফাঁকা লাইনে কোনও স্থান নেই।
সোমরস

উত্তর:



7

সিজেম, 52 বাইট

qN%::~_z_2{{_1>.-W<:g}%\z}*@@..{'=+}.{N@"\"v^"f=S*N}

সিজেএম ইন্টারপ্রেটারে এটি অনলাইনে চেষ্টা করুন ।

রিভিশন 3-এ একটি বাগ নির্দেশ করার জন্য @ ক্রোকোকে ধন্যবাদ।

রিভিশন in-এ একটি বাগ নির্দেশ করার জন্য @ পাইরহাকে ধন্যবাদ।

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

qN%        e# Read all input and split it at runs of linefeeds.
::~        e# Evaluate each character separately.
           e# This turns non-empty lines into arrays of integers.
_z_        e# Copy, transpose rows and columns, and copy again.
2{         e# Do the following twice:
  {        e#   For each row:
    _1>    e#     Copy the row and remove the copy's first element.
    .-     e#     Perform vectorized subtraction.
    W<     e#     Remove the last element.
           e#     This pushes the array of increments of the row.
    :g     e#     Replace each difference with its sign (-1, 0 or 1).
  }%       e#
  \        e#   Swap the two topmost arrays on the stack.
  z        e#   Transpose rows and columns of the topmost array.
}*         e#
           e# The topmost result has been transposed before and after computing
           e# the increments of its rows. It holds the increments of it columns.
           e# The result below it has been transposed twice (therefore not at
           e# all) before computing the increments of its rows.
@@         e# Rotate the number array and the row increment array on top.
..{        e# For each number and the corresponding increment, push both; then:
  '=+      e#   Add the increment to the character '='.
}          e#
.{         e# For each row of the column increment array and corresponding row
           e# of the last result, push both rows; then:
  N@       e#   Push a linefeed and rotate the column increments on top.
  "\"v^"f= e#   For each, select the appropriate comparison character.
  S*       e#   Join those characters, separated by spaces.
  N        e#   Push another linefeed.
 }         e#

5

পাইথন 2, 207 197 বাইট

f=lambda a:''.join(['=><'[cmp(a[i-1],a[i+1])]if c==' 'else'\n'+' '.join('"v^'[cmp(a[j-a.index('\n')],a[j+2])]for j in range(i,i+a.index('\n'),2))if a[i:i+2]=='\n\n'else c for i,c in enumerate(a)])

এটি একটি ফাংশন এফ তৈরি করে যা সংখ্যার গ্রিডটিকে একটি স্ট্রিং হিসাবে গ্রহণ করে এবং সংশ্লিষ্ট স্ট্রিংটি ভরা অসমতার সাথে প্রদান করে।

ফাংশনটি স্ট্রিংয়ের প্রতিটি অক্ষরের উপরে পুনরাবৃত্তি করে। চরিত্রটি যদি একটি স্থান হয় তবে এটি উভয় পক্ষের সংখ্যার জন্য বৈষম্যের সাথে প্রতিস্থাপিত হবে। চরিত্র এবং পরবর্তী অক্ষরটি যদি নতুন লাইন হয় তবে উপরে এবং নীচের সমস্ত সংখ্যার জন্য পুরো লাইনটি অসমতার সাথে প্রতিস্থাপিত হবে।

এখানে প্রশ্নটির প্রতিটি উদাহরণের জন্য কার্যকারিতাটির আউটপুট এখানে দেওয়া হয়েছে:

>>> print f("""\
... 4 2 3 1
...
... 6 2 3 1
...
... 6 9 2 1""")
4>2<3>1
^ " " "
6>2<3>1
" ^ v "
6<9>2>1
>>> print f("""\
... 1 2 3 4 5
...
... 5 4 3 2 1
...
... 0 0 0 3 2
...
... 3 2 0 0 0
...
... 2 1 3 1 5""")
1<2<3<4<5
^ ^ " v v
5>4>3>2>1
v v v ^ ^
0=0=0<3>2
^ ^ " v v
3>2>0=0=0
v v ^ ^ ^
2>1<3>1<5
>>> print f("8")
8

এটি চালাক, অক্ষরগুলিকে স্ট্রিংয়ে রেখে সাবস্ক্রিপশন করে। আমাকে কিছু সময় এটি ব্যবহার করতে হবে।
বেকুল

3

সি, 552 408 বাইট

এটি একটি গোলমাল, তবে এটি পরীক্ষার কেসগুলির সাথে কাজ করে (একক জন্য 8সঠিকভাবে কাজ করার জন্য ইনপুটটি একটি নতুন লাইন অনুসরণ করতে হবে)

#define P putchar
main(n,z)char**z;{char*t=*++z;n=0;while(*(*z)++!=10)if(**z!=32)n++;char a[n][n];int r=-1,c=0;n--;do*t>32?c?:r++,a[c][r]=*t:*t==10?c=0:c++;while(*++t);r=c=0;do{int j=a[c][r],s=61,k=a[c+1][r];P(j);if (c==n){if(r==n)break;c=0;r++;P(10);for(int t=a[c][r-1],b=a[c][r];c<n+1;t=a[c][r-1],b=a[c][r])s=t>b?118:t<b?94:34,printf("%c ",s),c++;c=0;P(10);continue;}s=j>k?62:j<k?60:s;P(s);c++;}while(1);}

এখানে প্রসারিত সংস্করণ; আমি কীভাবে এটিকে আরও কার্যকরভাবে গল্ফ করতে পারি তার উপায়গুলি আমি এখানে পছন্দ করব। আমি জানি যে এখানে উন্নতি করার অনেক কিছুই আছে।

#define P putchar
main(n,z)char**z; {
    char *t = *++z;
    n = 0;
    while (*(*z)++!=10)
        if (**z!=32)
            n++;
    char a[n][n];
    int c,r=c=0;
    r = -1,n--;
    do
        *t>32?c?:r++, a[c][r] = *t:*t==10?c=0:c++; //32 is ASCII for space
    while (*++t);
    r=c=0;
    do {
        int j = a[c][r],s=61,k = a[c+1][r];P(j);
        if (c==n)
        {
            if (r==n)break;
            c=0;r++;P(10);
            for (int t=a[c][r-1],b=a[c][r];c<n+1; t = a[c][r-1],b = a[c][r])
                s=t>b?118:t<b?94:34,printf("%c ",s),c++;
            c = 0;
            P(10);
            continue;
        }
        s=j>k?62:j<k?60:s;

        P(s);
        c++;
    } while (1);
}

1
আরও টের্নারি অপারেটরের প্রয়োজন। উদাহরণস্বরূপ: আপনার অভ্যন্তরের সর্বাধিক লুপের মধ্যে: s=t>b?'v':t<b?'^':'"';নোট করুন যে আপনি ইতিমধ্যে এক বা অন্যটির চেয়ে বড় হয়েছে কিনা তা পরীক্ষা করে দেখার পরে দুটি মান সমান কিনা তা পরীক্ষা করা অপ্রয়োজনীয়। এখানে কেবল 3 টি সম্ভাবনা রয়েছে।
ড্যারাল হফম্যান

পরামর্শের জন্য ধন্যবাদ, এটি করা ছাড়াও কয়েকটি অন্যান্য জিনিস 100 টি বাইট ছাড়িয়েছে।
ক্রিস লুনম

2

জাভাস্ক্রিপ্ট (ES6) 162

f=s=>(s=s.split`
`).map((r,i)=>r?(w=r).replace(/ /g,(c,j)=>x('<=>',r[j-1]-r[j+1])):w.replace(/\d/g,(c,j)=>x('^"v', c-s[i+1][j]))  ,x=(y,v)=>y[-~(v>0)-(v<0)]).join`
`

// more readeable 
u=s=>(
  x=(y,v)=>y[-~(v>0)-(v<0)],
  s=s.split`\n`,
  s.map((r,i)=>r
    ?(w=r).replace(/ /g,(c,j)=>x('<=>',r[j-1]-r[j+1]))
    :w.replace(/\d/g,(c,j)=>x('^"v', c-s[i+1][j]))
  ).join`\n`
)

//TEST
console.log=x=>O.innerHTML+=x+'\n'

;[
 '4 2 3 1\n\n6 2 3 1\n\n6 9 2 1\n\n0 2 1 6'
,'1 2 3 4 5\n\n5 4 3 2 1\n\n0 0 0 3 2\n\n3 2 0 0 0\n\n2 1 3 1 5'
,'8',  
,'0 0 0 0 0 0 0 0 0 0 0 0\n\n0 1 1 1 1 1 1 1 1 1 1 0\n\n0 1 2 3 4 5 6 7 8 9 1 0\n\n0 1 3 9 8 7 6 5 4 8 1 0\n\n0 1 4 8 9 8 7 6 5 7 1 0\n\n0 1 5 7 8 9 9 7 6 6 1 0\n\n0 1 6 6 7 9 9 8 7 5 1 0\n\n0 1 7 5 6 7 8 9 8 4 1 0\n\n0 1 8 4 5 6 7 8 9 3 1 0\n\n0 1 9 8 7 6 5 4 3 2 1 0\n\n0 1 1 1 1 1 1 1 1 1 1 0\n\n0 0 0 0 0 0 0 0 0 0 0 0'  
].forEach(t=>console.log(t+'\n\n'+f(t)+'\n\n'))
<pre id=O></pre>


1

হাস্কেল, 201 বাইট

import Data.List
t=transpose
g=mapM_ putStrLn.t.map(h 1).t.map(h 0).lines
h n s@(a:_:b:r)|'/'<a&&a<':'=a:(o n a b):h n(b:r)
 |0<1=s
h n r=r
f=fromEnum
o n a b=l!!n!!(1+signum(f a-f b))
l=["<=>","^\"v"]

g একটি স্ট্রিং আশা করে

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