শব্দ শেপিংয়ের আর্ট


21

শব্দ শেপিংয়ের আর্ট

একটি বাইনারি ম্যাট্রিক্স এবং অক্ষরের একটি স্ট্রিং দেওয়া হয়েছে, ম্যাট্রিক্সের সমস্ত 1 টি বাম থেকে ডানদিকে স্ট্রিংয়ের অক্ষরের সাথে প্রতিস্থাপন করুন। অক্ষরগুলি ম্যাট্রিক্সের আকারে তৈরি হয়ে যাওয়ার পরে 0 এর জায়গায় স্পেস দিয়ে প্রতিস্থাপন করে ম্যাট্রিক্স মুদ্রণ করুন। কেবল একটি বা দুটি উদাহরণ দেওয়া সম্ভবত এটি সহজ।


কেস: বেস কেস ...

ইনপুট এক:

[0,0,1,0,0]
[0,1,0,1,0]
[1,0,0,0,1]
[0,1,0,1,0]
[0,0,1,0,0]

"PPCGPPCG"

আউটপুট এক:

  P    
 P C  
G   P
 P C 
  G  

কেস: ইনপুট স্ট্রিং যদি এর সংখ্যার চেয়ে দীর্ঘ হয় ...

ইনপুট টু:

[1,0,0]
[0,1,0]
[1,0,1]

lambda

আউটপুট দুই:

l  
 a 
m b

কেস: ইনপুট স্ট্রিং যদি সংখ্যার চেয়ে কম হয় ...

তিনটি ইনপুট:

[1,1,1]
[1,0,1]
[1,1,1]

PPCG

আউটপুট থ্রি:

PPC
G P
PCG

উপলব্ধ অনুমান

  • আপনি ধরে নিতে পারেন ইনপুট স্ট্রিংটি কখনও ফাঁকা থাকে না।
  • আপনি ধরে নিতে পারেন ম্যাট্রিক্স কখনই খালি থাকবে না।
  • আপনি ধরে নিতে পারেন না যে বাইনারি ম্যাট্রিক্স কখনই সমস্ত জিরো হবে না।

বিধি

  • স্ট্রিংগুলির সংখ্যার চেয়ে কম হলে স্ট্রিংটি পুনরাবৃত্তি করুন; সকলকে প্রতিস্থাপন করতে হবে।
  • স্ট্রিং যদি এর সংখ্যার চেয়ে দীর্ঘ হয় তবে কেবল যা প্রয়োজন তা ব্যবহার করুন।
  • আপনি ইনপুটটির জন্য পূর্ণসংখ্যা / বিটের জায়গায় সত্য / মিথ্যা ব্যবহার করতে পারেন।
  • চলার জায়গাগুলি প্রয়োজনীয়, সমস্ত শূন্যস্থান অবশ্যই ফাঁকা স্থানের সাথে প্রতিস্থাপন করতে হবে ।
  • একটি একক পেছনের নতুন লাইন গ্রহণযোগ্য।
  • এটি কোড-গল্ফ, সর্বনিম্ন বাইট গণনা জয়।

ম্যাট্রিক্সের কি অ্যারে হিসাবে ইনপুট হতে হবে বা আমি একটি বহু-স্ট্রিং ব্যবহার করতে পারি?
টাইটাস

টিটাস যে ভাল, মার্টিন ইন্দার ইতিমধ্যে করেছেন।
যাদু অক্টোপাস উরন

বেস কেসটি ডান থেকে ডানে না। আপনি কি উপরে থেকে নীচে, তারপরে বাম থেকে ডান?
edc65

1
যদি ম্যাট্রিক্স উদাহরণস্বরূপ, শূন্যগুলির 2x2 গ্রিড হয়, তবে কি আমাদের একটি একক স্থান বা ফাঁকা 2x2 গ্রিড আউটপুট করা উচিত?
কৃত্রিম

@ পাইম্যান 2201 আরও ভাল হওয়ার জন্য পরীক্ষার কেস # 4 সাফ করেছে।
ম্যাজিক অক্টোপাস উরন

উত্তর:


3

এমএটিএল , 11 বাইট

yz:)1Gg!(c!

ইনপুটগুলি একটি সংখ্যার ম্যাট্রিক্স ( ;সারি বিভাজক হিসাবে) এবং একটি স্ট্রিং।

এটি অনলাইন চেষ্টা করুন! বা পরীক্ষার কেস যাচাই করুন: 1 , 2 , 3

y       % Take the two inputs implicitly. Duplicate the first
        % STACK: [1,0,0; 0,1,0; 1,0,1], 'lambda', [1,0,0; 0,1,0; 1,0,1]
z       % Number of nonzeros
        % STACK: [1,0,0; 0,1,0; 1,0,1], 'lambda', 4
:       % Range
        % STACK: [1,0,0; 0,1,0; 1,0,1], 'lambda', [1 2 3 4]
)       % Reference indexing (select values)
        % STACK: [1,0,0; 0,1,0; 1,0,1], 'lamb'
1Gg     % Push first input as a logical matrix; will be used as index
        % STACK: [1,0,0; 0,1,0; 1,0,1], 'lamb', [1,0,0; 0,1,0; 1,0,1]
!       % Transpose. This is necessary because MATL uses column-major order
        % (down, then accross)
(       % Assignment indexing (fill with values). Since the original matrix
        % is numeric, the new values are introduced as their ASCII codes
        % STACK: [108, 0, 109; 0, 97, 0; 1, 0, 98]
c       % Convert to char
        % STACK: ['l m'; ' a '; '  b']
!       % Transpose back. Implicitly display
        % STACK: ['l  '; ' a '; 'm b']

এমএটিএল মূলত পুনরায় সংজ্ঞা দেয় আমি কীভাবে সবসময় সংগ্রহ দেখেছি ...
ম্যাজিক অক্টোপাস উরন

@ কারাসোকম্পুটিং মতলব-এর মতো মূল ডেটা টাইপ হ'ল "আয়তক্ষেত্রাকার" অ্যারে: ম্যাট্রিক বা তাদের এন-ডাইমেনশনাল এনালগগুলি। এগুলিতে সংখ্যা, অক্ষর বা বুলিয়ান মান থাকতে পারে। এছাড়াও সেল অ্যারে রয়েছে, এতে পাইথনের তালিকার মতো নির্বিচারে জিনিস থাকতে পারে
লুইস মেন্ডো

2 সপ্তাহ পরে খোলা সেরা উত্তর।
ম্যাজিক অক্টোপাস উরন

8

Vim, 44 42 বাইট

qqy$P0xjf1"_xP{@qq@q:s/0/ /g^M:s/,/^V^M/g^M{D

সংরক্ষিত 2 বাইট @DjMcMoylex ধন্যবাদ !

এখানে, ^Mএকটি আক্ষরিক newline, এবং ^Vহয়CTRL-V

এই বিন্যাসে ইনপুট নেয়:

PPCG
00100,01010,10001,01010,00100

দাবি অস্বীকার: যদি স্ট্রিংটি 40 ডলারের চেয়ে বেশি লম্বা হয় তবে আপনার কম্পিউটারটি র্যামের বাইরে চলে যেতে পারে।

ব্যাখ্যা:

qq             @qq@q                            # Start recording a recursive macro.
  y$P0x                                         # Duplicate the string and cut out the first character
       jf1"_xP{                                 # Find the first 1, and replace it with the cut character from the string.
                                                # Now we have replaced all the 1's with their respective character, but we still have the array in the original format, and we have the string massivly duplicated at the first line, so we need to clean it up:
                    :s/0/ /g^M                  # Replace all 0's with a space
                              :s/,/^V^M/g^M     # Replace all ,'s with a newline. The ^V acts like a backslash, it escapes the newline so that the command isn't run too soon
                                           {D   # Delete the first line

এখানে আমার একটি জিআইএফ "প্রোগ্রাম" চালাচ্ছে:

আমি কী টাইপ করছি


1
হাহাহাহা, অস্বীকার অস্বীকার।
ম্যাজিক অক্টোপাস উরান

আপনি এক দম্পতি বন্ধ নিতে {জায়গায় ব্যবহার করতে পারেন gg
ডিজেএমসিএমহেম

ঠিক আছে, জিআইএফটি সত্যিই ঝরঝরে, তবে আপনি কি মনে করেন যে আপনি এটি কেবলমাত্র লিঙ্কের মাধ্যমে অন্তর্ভুক্ত করতে পারেন? আমি যখনই অতীতকে স্ক্রোল করার চেষ্টা করি তখন এটি আমার ক্রোমকে পিছিয়ে দেয় :(
ক্রোমকে

6

রেটিনা , 41 33 বাইট

0

+1`(.)(.*)(\D+)1
$2$1$3$1
A1`

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

ইনপুট স্ট্রিংটি ইনপুটটির প্রথম সারিতে দেওয়া হয়, ম্যাট্রিক্সের পরে। যেহেতু রেটিনার তালিকার কোনও ধারণাগুলি নেই (বা স্ট্রিং ব্যতীত সত্যিই কিছু) তাই বাইনারি ম্যাট্রিক্সে লাইনফিড থেকে পৃথক সারি পৃথক পৃথককারী নেই।

ব্যাখ্যা

0

শূন্যস্থানগুলিকে স্থানগুলিতে পরিণত করে।

+1`(.)(.*)(\D+)1
$2$1$3$1

1ইনপুট স্ট্রিংয়ের শেষে যে অক্ষরটি ঘোরানো হচ্ছে তার সাথে প্রথম বারটিকে ইনপুট স্ট্রিংয়ের প্রথম অক্ষরটি প্রতিস্থাপন করুন with 1ইনপুট স্ট্রিংয়ে অক্ষরের চেয়ে বেশি এস রয়েছে এমন যত্নের ক্ষেত্রে এটি নেওয়া হয় ।

A1`

প্রথম লাইন ত্যাগ করুন, অর্থাৎ ইনপুট স্ট্রিং।


2
(.)(.*)- তিহি ...
যাদু অক্টোপাস

6

জাভাস্ক্রিপ্ট ES6, 67 53 50 49 বাইট

সংরক্ষিত 3 বাইট @ ইথ প্রডাকশনগুলির জন্য ধন্যবাদ সংরক্ষিত @ নীলকে আরও 1 টি ধন্যবাদ

(a,b,i)=>a.replace(/./g,c=>+c?b[++i]||b[i=0]:' ')

f=
(a,b,i)=>a.replace(/./g,c=>+c?b[++i]||b[i=0]:' ')

G=_=>h.innerHTML = f(`00100
01010
10001
01010
00100`,z.value)
h.innerHTML = G()
<input id=z oninput="G()" value="PPCG"></input>
<pre id=h>

পুরাতন কোডটি জানার আগে আমি জানতাম যে স্ট্রিং ম্যাট্রিকগুলি একটি বৈধ ইনপুট ফর্ম্যাট:

(a,b)=>a.map(c=>c.map(d=>d?b[i++%b.length]:' ').join``,i=0).join`
`


আমি প্রস্তাব দিই c=>' '[c]||b[i++%b.length], তবে দুঃখের বিষয় এটি দীর্ঘকাল বাইট ...
ETH প্রোডাকশন

1
তবে 3 টি বাইট সংরক্ষণের আরও একটি উপায় রয়েছে:(a,b,i)=>a.replace(/\d/g,c=>+c?b[++i]||b[i=0]:' ')
ETH প্রোডাকশন

আমি মনে করি এটি স্ট্রিংয়ের দ্বিতীয় চরিত্রে শুরু হবে। একটি স্নিপেট আপডেট সুন্দর হবে।
টাইটাস

1
@Titus প্রথমে iহয় undefined, তাই ++iআয় NaN। যেহেতু bকোনও NaNসম্পত্তি নেই, b[++i]রিটার্ন নেই undefinedএবং ||অপারেটরটি প্রথমে প্রথমে চারটি সেট iকরে 0এবং ফিরে আসার সাথে সাথে তার ডানদিকে যুক্তি চালায় b
ETH প্রোডাকশনগুলি

1
আপনি কেন পরীক্ষা করছেন \d? নিশ্চয়ই .যথেষ্ট, যেহেতু আপনাকে কেবলমাত্র 0গুলি ও 1এর সাথে ডিল করতে হবে ( .নতুন লাইনের সাথে মেলে না)।
নিল

5

পার্ল, 40 বাইট

কোড + -i -pপতাকা 36 বাইট ।

@F=$^I=~/./g;s/1/$F[$i++%@F]/g;y;0; 

(চূড়ান্ত স্থান এবং চূড়ান্ত নতুন লাইনের অভাব নোট করুন)।

এটি চালানোর জন্য, -iপতাকার পরে ইনপুট স্ট্রিংটি লিখুন এবং ইনপুটটিতে ম্যাট্রিক্স সরবরাহ করুন:

perl -iPPCGPPCG -pe '@F=$^I=~/./g;s/1/$F[$i++%@F]/g;y;0; ' <<< "00100
01010
10001
01010
00100"

যদি আপনার পার্লটি কিছুটা পুরানো হয় তবে আপনার চূড়ান্ত সেমিকোলন যুক্ত করতে হবে (স্থানের পরে)।


5

পাইথন 2, 114 71 বাইট

দেখা যাচ্ছে যে আমি চাকাটি পুনরায় উদ্ভাবন করছিলাম, মাল্টলাইন স্ট্রিংয়ের উপর একটি সাধারণ ডাবল রিপ্লেস বেশ ভাল কাজ করে। স্ট্রিংটির s*len(L)*len(L[0])কোনও নেস্টেড তালিকার জন্য সত্যই কুৎসিত না করে সরাসরি জিরো গণনা করতে সক্ষম হওয়ার অতিরিক্ত সুবিধা রয়েছে

lambda S,s:S.replace("0"," ").replace("1","{}").format(*s*S.count('0'))

পুরানো সমাধান:

lambda s,L:"\n".join(["".join(map(lambda n:chr(n+32),l)).replace("!","{}")for l in L]).format(*s*len(L)*len(L[0]))

প্রথমে আমরা সমস্ত কিছু 32-র সাথে রূপান্তর করি chr(সমস্ত জিরো স্পেস হয়ে যায়), তারপরে আমরা ফাংশনটি ব্যবহারের জন্য সমস্তটির !সাথে প্রতিস্থাপন করি ।{}format

যদি NULLস্থান হিসাবে গণনা করা যায় তবে আমি যদি স্থানেরNULL পরিবর্তে প্রতারণা ও ব্যবহার করার সিদ্ধান্ত নিই তবে আমি 12 বাইট সংরক্ষণ করতে 32 এর সংযোজন এড়িয়ে যেতে পারি। ( একটি স্থান হিসাবে printপ্রদর্শন '\x00'করে)

lambda s,L:"\n".join(["".join(map(chr,l)).replace('\x01','{}')for l in L]).format(*s*len(L)*len(L[0]))

এটি কি এনওএলএল ব্যবহার করে সংক্ষিপ্ত হবে না এবং শেষে এগুলি স্থানের সাথে প্রতিস্থাপন করবে?
nedla2004

@ nedla2004, আপনি কীভাবে পরামর্শ দিচ্ছেন যে আমি এটি করি? কেবল .replace('\x00',' ')
শেষটি

তবে আমি মনে করি আপনি এ থেকে মুক্তি পেতে পারেন: মানচিত্র (ল্যাম্বদা এন: সিআর (এন + 32), এল)
নেডলা ২০০৪

দ্বিতীয় সমাধানটি পুরো সময়ের সাথে NULL এর সাথে কাজ করে, যা আমাকে 12 বাইট সাশ্রয় করে, শেষে স্পেসে অদলবদল করতে আমার তার চেয়ে বেশি ব্যয় করতে হবে
wnnmaw

আমি ভেবেছিলাম আপনি আসলে যা করতে পারেন তার চেয়ে বেশি সরিয়ে ফেলতে পারেন।
nedla2004

3

এপিএল, 18 বাইট

{(⍴⍺)⍴X\⍵⍴⍨+/X←,⍺}

এটি এমন একটি ফাংশন যা বুলিয়ান ম্যাট্রিক্সকে তার বাম আর্গুমেন্ট হিসাবে এবং স্ট্রিংকে তার ডান আর্গুমেন্ট হিসাবে গ্রহণ করে।

      (↑(1 0 0)(0 1 0)(1 0 1)) {(⍴⍺)⍴X\⍵⍴⍨+/X←,⍺}'lambda'
l  
 a 
m b

ব্যাখ্যা:

এপিএলের একটি অন্তর্নির্মিত রয়েছে যা এই জাতীয় কিছু করে, \(প্রসারিত)। তবে এটি কেবল ভেক্টরগুলিতেই কাজ করে এবং প্রতিটি অক্ষরকে বাস্তবে ব্যবহার করা প্রয়োজন requires

  • X←,⍺: ম্যাট্রিক্স সমতল করুন এবং এক্স-এ ফলাফল সংরক্ষণ করুন
  • ⍵⍴⍨+/X: চরিত্রের ভেক্টরটিকে পুনরায় আকার দিন যাতে এটিতে প্রয়োজনীয় পরিমাণের উপাদান থাকে (এটি প্রয়োজনে অক্ষরগুলি পুনরাবৃত্তি করে স্ট্রিং দীর্ঘ করতেও যত্ন নেয়)।
  • X\: প্রত্যেকের জন্য অক্ষরের একটি গ্রহন 1এবং প্রতিটি জন্য একটি স্থান 0মধ্যে X
  • (⍴⍺)⍴: ফলাফলটি পুনরায় আকার দিন যাতে এটির মূল ম্যাট্রিক্সের আকার থাকে।

3

পিএইচপি, 110 91 97 88 82 81 80 75 বাইট

@ ব্যবহারকারী59178 ধন্যবাদ 6 বাইট সংরক্ষণ করা

while(""<$c=$argv[1][$i++])echo$c<1?$c?:" ":($s=$argv[2])[$k++%strlen($s)];

সাথে চালাও -r। প্রথম আর্গুমেন্টে ম্যাট্রিক্স মাল্টলাইন স্ট্রিং হিসাবে, দ্বিতীয় যুক্তিতে স্ট্রিং হিসাবে প্রত্যাশা করে।


1
আপনার ৮২ বাইট ভার্সনের উপর ভিত্তি করে একটি ৮০ বাইট সংস্করণ: foreach(str_split($argv[1])as$c)echo$c<1?$c?:" ":($s=$argv[2])[$k++%strlen($s)];আমি দুটি <1>0
ত্রৈমাসিকির ক্রমটি

1
আপনি ব্যবহার দ্বারা 4 বাইট বাঁচাতে পারে for(;""!=$c=$argv[1][$i++];)পরিবর্তেforeach(...)
user59178

3

পাওয়ারশেল ভি 2+, 70 বাইট

param($a,$b)$b|%{-join($_|%{if($_){$a[$n++];$n%=$a.length}else{' '}})}

ইনপুট শব্দটিকে $aএবং ম্যাট্রিক্সকে অ্যারে-অফ-অ্যারে হিসাবে নেয় $b(নীচের উদাহরণগুলি দেখুন)। এর মধ্য দিয়ে লুপ হয় $b, তারপরে প্রতিটি সারির উপাদানগুলির মধ্য দিয়ে লুপ হয় $_|%{...}। অভ্যন্তরীণ লুপটি একটি if/ elseশর্ত, যেখানে আমরা হয় আউটপুট $a[$n++]এবং স্ট্রিংয়ের দৈর্ঘ্যের সমতুল্য, অথবা একটি স্থান আউটপুট ' '। এগুলি -joinআবার একসঙ্গে স্ট্রিংয়ে এড হয়। প্রতিটি স্ট্রিং পাইপলাইনে রেখে যায়, এবং Write-Outputপ্রোগ্রামের সমাপ্তির মাধ্যমে ঘটে নতুন লাইনের সাথে অন্তর্নিহিত আউটপুট ।

PS C:\Tools\Scripts\golfing> .\the-art-of-word-shaping.ps1 'PPCGPPCG' @(@(0,0,1,0,0),@(0,1,0,1,0),@(1,0,0,0,1),@(0,1,0,1,0),@(0,0,1,0,0))
  P  
 P C 
G   P
 P C 
  G  

PS C:\Tools\Scripts\golfing> .\the-art-of-word-shaping.ps1 'lambda' @(@(1,0,0),@(0,1,0),@(1,0,1))
l  
 a 
m b

PS C:\Tools\Scripts\golfing> .\the-art-of-word-shaping.ps1 'PPCG' @(@(1,1,1),@(1,0,1),@(1,1,1))
PPC
G P
PCG


2

পাইথন 3, 104 (বা 83) বাইট

import itertools as i
def f(s,L):s=i.cycle(s);return'\n'.join(' '.join(next(s)*e for e in l)for l in L)

সংক্ষিপ্ত বিকল্প রয়েছে (৮৩ বাইট), তবে স্ট্রিং যদি প্রয়োজনের চেয়ে ৯৯৯ গুণের চেয়ে কম হয়:

def f(s,L):s=list(s)*999;return'\n'.join(' '.join(s.pop(0)*e for e in l)for l in L)

দ্বিতীয় সমাধান আমার পক্ষে কাজ করে না, কারণ আপনি nextকোনও তালিকায় কল করতে পারবেন না । আপনি যদি s=iter(list(s)*999)এটি করেন (89 বাইট)
L3viathan

1
@ L3viathan দুঃখিত, আমি এটা বোঝাতে চাইছিলাম s.pop(0)। দেখে মনে হচ্ছে যে আমি ভুল সংস্করণটি অনুলিপি করেছি, এটি ঠিক করেছিলাম।
অ্যালিসা

s[i++%s.length()]আমি একটি অজগর জানি না, যদিও এটি একটি ভাল পদ্ধতি।
যাদু অক্টোপাস উরন

এটি দুর্দান্ত হবে, তবে i++পাইথনের মতো কোনও জিনিস নেই
অ্যালিসা

1

পাইথ, 12 বাইট

jms?R@z~hZ\ 

এটি অনলাইনে চেষ্টা করুন: বিক্ষোভ

ব্যাখ্যা:

jms?R@z~hZ\ dQ   implicit d and Q at the end
                 I use the variable Z, which is initialized with 0 by default
 m           Q   map each line d of the Q (input matrix) to:
   ?R       d       map each number d of the line either to
     @z~hZ             input[Z++] (increase Z, but lookup in input string with old value)
          \            or space
  s                 join chars to a string
j                print each string on a separate line


1

কমন লিস্প, 152 বাইট

(defun m(g w)(let((a 0))(loop for r in g do(loop for e in r do(format t"~[ ~;~c~]"e(char w a))(if(= e 1)(setf a(mod(1+ a)(length w)))))(format t"~%"))))

ব্যবহার:

* (m (list (list 1 0 1)
           (list 0 1 0)
           (list 1 0 1)) "ppcg")
p p
 c 
g p

এই ফাংশনটি গ্রিডের প্রতিটি সারির প্রতিটি উপাদানের মধ্য দিয়ে যায়। formatনিয়ন্ত্রণ স্ট্রিং পারেন একটি স্থান ছাপে যদি উপাদান একটি 0 বা অক্ষর যুক্তি হ্রাস যদি উপাদান 1. একটি newline গ্রিড প্রতিটি সারি পরে মুদ্রিত পরার। স্ট্রিংটি খুব ছোট হলে এটি শুরু থেকে পুনরাবৃত্তি করে; যদি এটি খুব দীর্ঘ হয় তবে কেবল উপযুক্ত অংশটি আউটপুট হয়।


1

পিপ , 18 বাইট

কোড 17 বাইট, জন্য +1 -l পতাকার ।

Yb{a?y@++vs}MMa^s

অ্যারেটিকে প্রথম কমান্ড-লাইন আর্গুমেন্ট হিসাবে গ্রহণ করে: 100 010 101(শেলগুলিতে উদ্ধৃত করা প্রয়োজন) এবং দ্বিতীয় কমান্ড-লাইন আর্গুমেন্ট হিসাবে স্ট্রিংটি।এটি অনলাইন চেষ্টা করুন!

ব্যাখ্যা

                   a and b are cmdline args, s is space, v is -1
Yb                 Yank b into global variable y
              a^s  Split a on space into list of rows
  {        }MM     Map this function to the items of the items of a (i.e. each character):
   a               Function argument
    ?              Ternary operator (truthy if 1, falsey if 0)
       ++v         If truthy, increment v...
     y@            ... and use it to index into y (cyclically)
                   I.e.: each time we hit a 1, replace it with the next character of y
          s        If falsey, space
                   The result is a list of lists of characters; -l concats sublists and
                   newline-separates the main list

1

জাভা, 237 233 বাইট

সম্পাদনা: মুকুল কুমারকে ধন্যবাদ 4 টি বাইট

Golfed:

String T(int[][]m,String b){int l=m.length,a=0;String o="";for(int i=0;i<l;i++){for(int j=0;j<l;j++){if(m[i][j]==1&&a<b.length()){o+=Character.toString(b.toCharArray()[a]);a++;if(a== b.length()-1)a=0;}else o+=" ";}o+="\n";}return o;}

Ungolfed:

public String T(int[][] m, String b) {
    int l = m.length,a=0;
    String o = "";
    for(int i = 0; i < l; i++)
    {
        for(int j = 0; j < l; j++)
        {
            if(m[i][j] == 1 && a < b.length())
            {
                o += Character.toString(b.toCharArray()[a]);
                a++;

                if(a == b.length() - 1)
                    a = 0;
            }
            else
             o += " ";
        }
        o += "\n";
    }
    return o;
}

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

  int[][] matrix = new int[][]
  {{ 0, 0, 1, 0, 0 }, { 0, 1, 0, 1, 0 },
  { 1, 0, 0, 0, 1 },{ 0, 1, 0, 1, 0 },
  { 0, 0, 1, 0, 0 },};
  TheArtOfWordShaping taows = new TheArtOfWordShaping();
  System.out.println(taows.T(matrix, "PPCGPPCG"));

  matrix = new int[][] {{1,0,0}, {0,1,0}, {1,0, 1}};
  taows = new TheArtOfWordShaping();
  System.out.println(taows.T(matrix, "lamda"));

  matrix = new int[][] {{1,1,1},{1,0,1},{1,1, 1}};
  taows = new TheArtOfWordShaping();
  System.out.println(taows.T(matrix, "PPCG"));

  P  
 P C 
G   P
 P C 
  P  

l  
 a 
m d

PPC
P P
CPP

আপনি সমস্ত লাইনের এক লাইনে ঘোষণা করতে পারেন .....
মুকুল কুমার

1

পাইকে, 12 বাইট

.FdRIKQoQl%@

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

অক্ষরের একটি ম্যাট্রিক্স আউটপুট দেয়

বা 9 বাইট, অপ-প্রতিযোগিতামূলক।

.FdRIKQo@

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

  • সূচিপত্রের সূচকের দৈর্ঘ্যের চেয়ে বড় যেখানে সূচকগুলির জন্য জিজ্ঞাসা করা হয়েছে সেগুলিতে মোড়ক যুক্ত করুন। .এফ - ডিপ_এর জন্য (ইনপুট) আমি - যদি ^: কিউ @ - কিউ [ও ++] ডিআর - অন্য ""

এমনকি আরও অ-প্রতিযোগিতামূলক, 8 বাইট

.FIQo@(P

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

  • print_grid এখন খালি স্ট্রিংগুলি সঠিকভাবে সারিবদ্ধ করে
  • deep_for এখন সত্যের কাছে ভিন্ন ধরণের মিথ্যা সম্পর্কে টাইপ-অনুমান করা যায়

.F    (  -  deep_for(input)
 I       -   if ^:
  Qo@    -    input[o++]
       P - pretty_print(^)

1

জাভা, 122 বাইট

String g(int[][]a,char[]b){String r="";int e=0;for(int[]c:a){for(int d:c){r+=d==0?' ':b[e++%b.length];}r+='\n';}return r;}

0

গণিত, 76 বাইট

""<>(s=#2;f:=(s=RotateLeft[s];Last[s]);Map[If[#1,f," "]&,#,{2}]~Riffle~"\n")&

দুটি আর্গুমেন্টের নামহীন ফাংশন, যার মধ্যে প্রথমটি ( #) এর Trueগুলি এবং Falseগুলিগুলির একটি অ্যারে এবং দ্বিতীয়টি ( s) এর একটি অক্ষরের তালিকা of সহায়ক ফাংশন

f:=(s=RotateLeft[s];Last[s])

সংজ্ঞায়িত করা হয়, যা প্রথম অক্ষরটির প্রান্তটি sশেষের দিকে রাখে এবং তারপরে কেবল সরিয়ে নেওয়া চরিত্রটি দেয়। fবেশ কয়েকবার কল করা চক্রাকারে এর চরিত্রগুলি ফিরিয়ে দেবেs

মূল ফাংশনটি হ'ল

Map[If[#1,f," "]&,#,{2}]

যা ইনপুট অ্যারেতে fপ্রতিটি Trueমানকে কল করে এবং প্রতিটি মিথ্যা ইনপুটটিতে একটি স্থান প্রদান করে। ( {2}বলছেMap উপাদানগুলির তালিকাগুলির তালিকাগুলির পরিবর্তে অ্যারের উপাদান তালিকার উপাদানগুলিতে কাজ করার ))

এই 60 বাইটগুলি অক্ষরের- sএবং স্পেসগুলির একটি অ্যারে দেয় । মোড়ক

    ""<>(...~Riffle~"\n")&

অ্যারের প্রতিটি তালিকার মধ্যে নিউলাইনগুলি রাখে এবং তারপরে সবকিছুকে সংযুক্ত করে।


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