কোনও পথে সমস্ত স্থানাঙ্কগুলি সন্ধান করুন


21

ইনপুট হিসাবে একটি 2 ডি স্ট্রিং দেওয়া হয়, হয় নিউলাইনগুলির সাথে স্ট্রিং হিসাবে বা লাইনের একটি তালিকা হিসাবে, তালিকার (x, y)সমস্ত হ্যাশ ( #) এর স্থানাঙ্ক আউটপুট দেয় । ইনপুটটিতে কেবল হ্যাশ এবং স্পেস থাকবে। (এবং নিউলাইনগুলি, আপনি যদি 2D স্ট্রিং হিসাবে ইনপুট নিতে চান)

যদি কোনও হ্যাশ না থাকে তবে আপনি যে কোনও কিছু আউটপুট করতে পারেন।

আউটপুটটি কোন সংখ্যার সাথে যুক্ত রয়েছে তা নির্বিঘ্নে হওয়া উচিত।

উদাহরণ:

##

আউটপুট করা উচিত:

(0,0), (1,0)

এটি উপরের বাম থেকে শুরু করে 0-ভিত্তিক সূচক ধরেছে। আপনি যে কোনও কোণ থেকে শুরু করতে পারেন, 0 বা 1-ভিত্তিক সূচক এবং এবং / অথবা আউটপুট yপ্রথমে ব্যবহার করতে পারেন। (যেমন ফর্ম y,x)

আরও পরীক্ষার কেস (আবার সমস্ত 0-ভিত্তিক শীর্ষ-বাম (x, y)সূচক ব্যবহার করে):

    #
#####
#

(4, 0), (0, 1), (1, 1), (2, 1), (3, 1), (4, 1), (0, 2)


# ###
### #

(0, 0), (2, 0), (3, 0), (4, 0), (0, 1), (1, 1), (2, 1), (4, 1)

নোট করুন যে এই পরীক্ষাগুলির সমস্ত তালিকা সারি অনুসারে করে, পাথ অনুসরণ করে নয়।

আপনি ধরে নিতে পারেন যে হ্যাশগুলি একটি অবিচ্ছিন্ন ট্রেইল গঠন করবে, অর্থাত্ # #কখনই ইনপুট হবে না। (সম্ভবত কিছু যায় আসে না, তবে কেউ এইটিকে পুনরায় প্রবর্তন করতে চায়)

আপনি যে কোনও ক্রম স্থানাঙ্কগুলি আউটপুট করতে পারেন, যেমন উল্লম্ব কলাম, অনুভূমিক সারি, বা কেবল একটি অনিবৃদ্ধ তালিকা।


আমরা কী ধরে নিতে পারি ইনপুটটিতে কেবল হ্যাশ এবং স্পেস রয়েছে?
DJMcMayhem

@ ডিজেএমসিএমহেম হ্যাঁ, এটিকে প্রশ্নটিতে সম্পাদনা করছেন।
Rɪᴋᴇʀ

চান এই বা এই বৈধ আউটপুট বিন্যাসের হবে?
Zgarb

@ জাগারব মূলত অতিরিক্ত 1,1 এবং হ্যাশ সহ? হ্যাঁ, নিশ্চিত
আর

উত্তর:


10

স্লিপ , 2 + 1 = 3 বাইট

pপতাকাটির জন্য +1 বাইট । কোড:

`#

ব্যাখ্যা:

p-Flag আয় নিম্নলিখিত প্রতিটি occurence অবস্থান:

`#      // The character '#'

এখানে চেষ্টা করুন!


1
আমি মনে করি আমাদের একজন বিজয়ী আছে
অ্যাডাম

কোন ব্যাখ্যা?
আর

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

@ আদম ওহ, দুর্দান্ত!
আর

8

গ্রিম , 5 বাইট

pa`\#

এটি অনলাইন চেষ্টা করুন! আউটপুট ফর্ম্যাটটি কিছুটা মজাদার তবে ওপি জানিয়েছে যে এটি বৈধ।

ব্যাখ্যা

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


8

এমএটিএল , 7 6 5 বাইট

এটি (1,1)উপরের বাম কোণে 1-ভিত্তিক সূচক ব্যবহার করছে ।

oo&fh

ব্যাখ্যা:

o        % convert char to double 
 o       % remainder mod 2 ('#' == 35, ' '==32) makes spaces falsy
  &f     % apply `find` with 2d-output 
    h   % concatenate outputs to display x- and y-coordinates side by side

প্রতিটি ডি -এম বাইটের জন্য @ ডিজেএমসিমেহেম এবং @ লুইস মেন্ডোকে ধন্যবাদ!

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


3
আপনি ooH#fhএকটি বাইট সংরক্ষণ করতে পারেন। (পূর্ণসংখ্যায় রূপান্তর করুন, মোডে 2) যেহেতু স্থান সমান (মোড 2 == 0, মিথ্যা) এবং #বিজোড় (মোড 1 == 1, সত্যবাদী)
ডিজেএমসিএমহেম

ওহ, দুর্দান্ত, আপনাকে অনেক ধন্যবাদ! =)
flawr

7

পাইথন , 67 বাইট

এটি আসলে একই ধরণের বিষয়ে আমার স্ট্যাক ওভারফ্লো উত্তরের একটি গল্ফ ।

lambda a,e=enumerate:[[(i,j)for j,B in e(A)if'!'<B]for i,A in e(a)]

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

2D তালিকার মধ্য দিয়ে লুপগুলি, হ্যাশ অক্ষরের রেকর্ডিং করে এবং ফলাফলটি দেয়। আমরা ব্যবহার করে একটি বাইট সংরক্ষণ char > '!'বদলে char == '#', কারণ ইনপুট শুধুমাত্র হ্যাশ এবং স্পেস নিয়ে গঠিত হবে, এবং তাই হ্যাশ ( 0x23) শুধুমাত্র অক্ষর বিস্ময়বোধক চিহ্ন চেয়ে বড় হতে হবে ( 0x21)।


5

জাভাস্ক্রিপ্ট (ES6), 70 67 বাইট

s=>s.replace(/./g,(c,i)=>c>' '?[i%l,i/-l|0]+' ':'',l=~s.indexOf`
`)

স্থানাঙ্কগুলির একটি নতুনলাইন এবং স্থান-বিভাজিত তালিকা আউটপুট দেয় eg

4,0
0,1 1,1 2,1 3,1 4,1
0,2

আপনি একটি অদ্ভুত আউটপুট ফর্ম্যাট দিয়ে আরও খাটো পেতে পারেন:

s=>s.replace(/#/g,(c,i)=>[i%l,i/-l|0]+c,l=~s.indexOf`
`)

এই ফলাফল

    4,0#
0,1#1,1#2,1#3,1#4,1#
0,2#

দ্বিতীয় পরীক্ষা মামলার জন্য। এটি এখনও পরিষ্কার যে কোন সংখ্যার সাথে জুটিবদ্ধ রয়েছে ...



4

জেলি , 8 বাইট

n⁶T€,€"J

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

2D অক্ষরের অ্যারে দেওয়া (= স্ট্রিংগুলির একটি তালিকা):

            Implicit input (example):
               [[' ', ' ', ' ', ' ', '#']
               ,['#', '#', '#', '#', '#']
               ,['#', ' ', ' ', ' ', ' ']]
n⁶          Not-equal to space (⁶).
               [[0, 0, 0, 0, 1]
               ,[1, 1, 1, 1, 1]
               ,[1, 0, 0, 0, 0]]
  T€        Indices of 1s in each row
               [[5], [1,2,3,4,5], [1]]
    ,€"J    Pair each, vectorizing, with y-indices
               [[[5,1]], [[1,2],[2,2],[3,2],[4,2],[5,2]], [[1,3]]]

3

ডায়ালগ এপিএল 16.0, 5 অক্ষর = 9 বাইট বা 6 অক্ষর = 8 বাইট

উপরের বাম দিক থেকে (y, x) জোড়ের তালিকা দেয়।

⍸⎕='#'

কোথায়

ইনপুট

= সমান

'#' এই চরিত্র *

* প্রতিস্থাপনের '#'মাধ্যমে একটি বাইটের মূল্যে একটি অক্ষর সংরক্ষণ করা সম্ভব ⍕#(মূল নেমস্পেসের বিন্যাস করুন)

অনলাইনে চেষ্টা করুন! নোট যা অনুকরণ করা হয়েছে i কারণ ট্রিপএপিএল 14.0 সংস্করণ চালায়।


ডায়ালগ এপিএল এনকোডিং-এ 1 চর = 1 বাইটে বেশ নিশ্চিত, না?
devRicher

@ দেবরিচার সাধারণত, তবে একক বাইট সংস্করণে অন্তর্ভুক্ত নয়। "বাইটস" লিঙ্কটি দেখুন।
অ্যাডাম

3

জাভাস্ক্রিপ্ট (ফায়ারফক্স 30-57), 61 বাইট

s=>[for(c of(x=0,y=1,s))if(c<' '?(y++,x=0):(x++,c>' '))[y,x]]

1-ভিত্তিক স্থানাঙ্ক ফেরত দেয়। সহজেই মধ্যে পরিবর্তনযোগ্য [y, x]এবং [x, y]ক্রম। Ungolfed:

function coords(s) {
    var x = 0;
    var y = 1;
    for (Var c of s) {
        if (c == "\n") {
            y++;
            x=0;
        } else {
            x++;
        }
        if (c == "#") {
            console.log(y, x);
        }
    }
}

2

ভিম, 37 বাইট

:%s/#/\=line('.').','.col('.').' '/g<cr>

যেহেতু ভি বেশিরভাগ পিছনের দিকে সামঞ্জস্যপূর্ণ তাই আপনি পারবেন এটি অনলাইনে চেষ্টা !

একটি সরল রেইগেক্স সমাধান, যেখানে এটি প্রতিটি '#' এর পরিবর্তিত স্থানটির সাথে এটি স্থান করে (এক-ভিত্তিক সূচক)। এটি লিখতে গিয়ে আমি কিছুটা চিন্তিত ছিলাম যে কোনও লাইনে প্রথমটি স্থান দেওয়ার পরে স্থানটি পরিবর্তিত হবে, তবে এটি কোনও সমস্যা বলে মনে হয় না। টিবিএইচ আমি এই সমাধানটি কতটা সহজ হয়ে গিয়েছিল তা শুনে আমি আনন্দিত হয়েছি।

দুর্ভাগ্যক্রমে, ভাইমস্ক্রিপ্টটি খুব ভার্বোজ, সুতরাং বেশিরভাগ বাইট ফলাফল পৃথকীকরণ থেকে আসে যাতে এটি এখনও সুস্পষ্ট। অন্যথায়, আমরা করতে পারে

:%s/#/\=line('.').col('.')/g

তবে এটি আউটপুট তৈরি করে যা ব্যাখ্যা করা বেশ শক্ত। অতিরিক্তভাবে, এটি কেবল গ্রিডটি সর্বদা 9x9 বা তার চেয়ে কম আকারে কাজ করে।

এটি একটি মজাদার সমাধান কারণ এটি হ্যাশের প্রতিনিধিত্ব করে এমন স্থানে প্রতিটি জোড়া স্থানাঙ্ক দেখায় । উদাহরণস্বরূপ, ইনপুট

# ###
### #

আউটপুট

1,1  1,3 1,4 1,5 
2,1 2,2 2,3  2,5 

অবশ্যই, আমরা যদি ভি ব্যবহার করে থাকি, আমরা পেছনের নতুন লাইনটি সরিয়ে ফেলতে এবং রেজিক্সকে সংকুচিত করতে পারি। তারপর এটি সহজভাবে হতে পারে

Í#/½line('.').','.col('.').' '/g

(32 বাইট)

তবে যেহেতু এটি হুবহু একই পদ্ধতি এবং এখনও বেদনাদায়ক ভার্বোস, তাই গল্ফিং ভাষা ব্যবহার করা এটি উপযুক্ত বলে মনে হয় না।


2
ঠিক আছে, পুরো "হ্যাশের অবস্থানের প্রতিটি জুটির সমন্বয়কে দেখায়" বেশ সুন্দর is +1
0

2

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

concat.zipWith(\y l->[(x,y)|(x,'#')<-zip[0..]l])[0..]

ইনপুটটি স্ট্রিংগুলির তালিকা হিসাবে নেওয়া হয়। আউটপুটটি (x,y)জোড়গুলির তালিকা (0 টি সূচকযুক্ত), যেমন

*Main> concat.zipWith(\y l->[(x,y)|(x,'#')<-zip[0..]l])[0..] $ ["# ###","### #"]
[(0,0),(2,0),(3,0),(4,0),(0,1),(1,1),(2,1),(4,1)]

2

লুয়া, 141 বাইট

w=io.read()x=w:sub(1,w:find("\n")-1):len()_,c=w:gsub("\n","")for i=0,x do for j=0,c+1 do if w:sub(c*x+i,c*x+i)=="#"then print(i,j)end end end

সকাল 2:30 টা, আমি বিছানায়, আমার ফোনে। আমি কেন এটা করছি?


1

গণিত, 12 বাইট

Position@"#"

অপারেটর ফর্ম Position। 2D অক্ষরের অ্যারে ধরে নেয়। শীর্ষ-বাম এন্ট্রি থেকে শুরু করে 1-সূচিযুক্ত। ফর্মের স্থানাঙ্কের একটি তালিকা আউটপুট করে {row,column}


আমি যেভাবে টাস্কের বিবরণটি পড়েছি, আমি মনে করি না যে স্ট্রিংগুলিকে সমর্থন করে এমন ভাষাগুলির জন্য 2D বর্ণচিহ্ন গ্রহণের অনুমতি রয়েছে।
শে


আমি সন্তুষ্ট নই. একটি জিনিসের জন্য, এই প্রশ্নটিতে দৃষ্টি নিবদ্ধ করা হয়েছে char[], যা আসলে সি-ভিত্তিক ভাষাগুলিতে স্ট্রিংগুলি সঞ্চয় করার একটি সাধারণ উপায়। এছাড়াও, এই টাস্কের বর্ণনায় বিশেষত "হয় নিউলাইনগুলির সাথে একটি স্ট্রিং বা রেখার তালিকার তালিকা" হিসাবে উল্লেখ করা হয়েছে, এবং তালিকা-অফ-তালিকা-বা অক্ষরের 2D ম্যাট্রিক্সের উল্লেখ নেই।
শে

@ এসএমএলস ঠিক Sensক্যমত্যটি ছিল যে যদি কোনও প্রশ্ন একটি স্ট্রিং নির্দিষ্ট করে, এর অর্থ অক্ষরের একটি অনুক্রম এবং আপনার ভাষায় যদি তা প্রকাশ করার একাধিক উপায় থাকে তবে আপনি আপনার গল্ফিংয়ের প্রয়োজন অনুসারে এমন একটি চয়ন করতে স্বাধীন হন। "হয় নতুন লাইনের সাথে একটি স্ট্রিং বা রেখার তালিকা হিসাবে উল্লেখ করা" এর পরিবর্তনে কিছুই হয় না যেহেতু আপনি যদি প্রতিটি লাইনকে অক্ষরের অ্যারে হিসাবে উপস্থাপন করেন তবে আপনি হুবহু অক্ষরের একটি 2D অ্যারে পাবেন।
নেজেনিসিস

1

পিএইচপি, 69 বাইট

for(;$a=$argv[++$i];)for($j=0;""<$c=$a[$j++];)echo$c>" "?"$j $i,":"";

উপরে বাম থেকে শুরু করে 1-ভিত্তিক সূচক ব্যবহার করে।
ব্যবহার করুন:

php -r 'for(;$a=$argv[++$i];)for($j=0;""<$c=$a[$j++];)if($c>" ")echo"$j $i,";' '    #' '#####' '#    '

আউটপুট দেবে:

5 1,1 2,2 2,3 2,4 2,5 2,1 3,


1

আরবিএক্স.লুয়া, 131 বাইট

ইনপুটটি বৈধ বলে ধরে নিতে হবে (জেড সমতল অক্ষ, সাদা স্থানগুলি Whiteটাইলস, হ্যাশগুলি অন্য কোনও রঙ হতে পারে, উপরের-বাম অংশটি অবস্থিত 0, 0, 0) এবং সমস্ত অংশ একই মডেলের অংশ M, এবং মডেল অন্যথায় খালি।

for k,v in pairs(workspace.M:GetChildren())do if v.BrickColor~=BrickColor.new("White")then print(v.Position.X,-v.Position.Y)end end

নমুনা ইনপুট / আউটপুট:

উদাহরণ


আপনি একটি বৈধ i / o উদাহরণ প্রদান করতে পারেন?
Rɪᴋᴇʀ

@ ইস্টারলিআইর্ক সেখানে উত্তরটি সম্পাদনা করেছেন।
devRicher

1

পার্ল 6 , 25 বাইট (22 ​​টি অক্ষর)

{^∞ZX@_».indices("#")}

লাইনের তালিকা হিসাবে ইনপুট নেয়।
প্রতি লাইনে একটি তালিকা আউটপুট দেয়, প্রত্যেকটি স্থানাঙ্কের জন্য (y, x) টিপল থাকে।
এটি অনলাইন চেষ্টা করুন!

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

{                    }  # A lambda.
{    @_»             }  # For each input line:
        .indices("#")   #    get x-coordinates.  (4) (0 1 2 3 4) (0)
 ^∞                     # Range from 0 to Inf.    0   1           2 ...
   Z                    # Zip with:              (0 (4)) (1 (0 1 2 3 4)) (2 (0))
    X                   #    Cartesian product.  ((0 4)) ((1 0) (1 1) (1 2) (1 3) (1 4)) ((2 0))

1

গ্রোভি, 80 68 বাইট

{y=0;it.each{it.eachWithIndex{x,i->print(x=='#'?"($i,$y)":"")};y++}}

উদাহরণ ইনপুট:

[#   #,#   #,#####]

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

(0,0)(4,0)(0,1)(4,1)(0,2)(1,2)(2,2)(3,2)(4,2)

যখন ইনসপুটটি লাইনগুলিতে বিভক্ত করা হবে, যখন কার্য বিবরণটি ইতিমধ্যে বিভাজনের রেখাগুলির তালিকা নিতে দেয়?
স্মাইলস


0

সি, 80 বাইট

x,y;f(char*s){for(x=y=0;*s;printf(*s-35?"":"%d,%d ",x,y),*s++==10?++y,x=0:++x);}

নিউলাইন-সীমাবদ্ধ চর অ্যারে হিসাবে ইনপুট প্রয়োজন, স্ক্রিনে আউটপুট প্রিন্ট করে।

অবরুদ্ধ এবং ব্যবহার:

x,y;

f(char*s){
 for(
  x = y = 0;             //init coordinates
  *s;                //iterate until end
  printf(*s-35 ? "" : "%d,%d ", x, y),     //print coordinates or empty string
  *s++==10 ? ++y, x=0 : ++x              //advance to the right or the next line
 );
}


main(){
 f("    #\n#####\n#    ");
 puts("");
 f("# ###\n### #");
}

1
78 বাইট:x,y;f(char*s){for(x=y=0;*s;*s++==10?++y,x=0:++x)*s==35&&printf("%d,%d ",x,y);}
গ্যাস্ট্রোপনার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.