একটি ডান ত্রিভুজ তৈরি করুন


10

এই চ্যালেঞ্জের ক্ষেত্রে আপনাকে অবশ্যই দুটি সংখ্যা (একটি স্থান দ্বারা পৃথক করা) ইনপুট হিসাবে নিতে হবে এবং xএস দ্বারা গঠিত একটি ASCII ডান ত্রিভুজ আউটপুট ।

প্রথম সংখ্যাটি ত্রিভুজটির প্রস্থ এবং উচ্চতা হবে যা আপনার আউটপুট করে should দ্বিতীয় সংখ্যাটি কোন কোণে কোন কোণে থাকবে The কোণগুলি 1 থেকে 4 নম্বরযুক্ত, উপরের বাম দিকে শুরু করে এবং ইংলিশ পড়ার ক্রমে যাবে:

1    2



3    4

উদাহরণস্বরূপ (ইনপুট এবং তাদের সম্পর্কিত ত্রিভুজ আউটপুট):

INPUT | 3 1 | 3 2 | 3 3 | 3 4
------+-----+-----+-----+----
 OUT- | xxx | xxx | x   |   x
 PUT  | xx  |  xx | xx  |  xx
      | x   |   x | xxx | xxx

আপনার প্রোগ্রামের আউটপুটটি অবশ্যই তাদের নিজ নিজ ইনপুটগুলির জন্য এই উদাহরণগুলির সাথে মেলে।

ইনপুটটি সর্বদা বৈধ থাকবে: প্রথম সংখ্যাটি পূর্ণসংখ্যা ≥1 হবে এবং দ্বিতীয় সংখ্যাটি 1, 2, 3 বা 4 হবে।

এটি ; সংক্ষিপ্ততম কোড (অক্ষর গণনায়) জিতেছে

উত্তর:


9

এপিএল (30)

{' x'[1+(⍎⍵⌷'⌽+⍉⊖')≤/¨⍳2⍴⍺]}/⎕

ব্যাখ্যা:

  • {... }/⎕: ইনপুটটির উপরে প্রদত্ত ফাংশন হ্রাস করুন (সুতরাং যদি ইনপুটটিতে 2 নম্বর থাকে তবে কেবলমাত্র বাম সংখ্যা এবং ডান নম্বর হওয়ায় এই দুটি সংখ্যা সহ ফাংশনটি কল করে )
  • ≤/¨⍳2⍴⍺: একটি - সমন্বিত ম্যাট্রিক্স তৈরি করুন এবং একটি বিটফিল্ড দিয়ে X স্থানাঙ্ক Y এর স্থানাঙ্কের চেয়ে বড় নয় এমন অবস্থানগুলি সেট করুন।
  • (⍎⍵⌷'⌽+⍉⊖'): ত্রিভুজটি ডান-সাইড-আপ করার জন্য প্রদত্ত একটি রূপান্তর ফাংশন নির্বাচন করুন ।
  • ' x'[1+... ]: বিটফিল্ডে একটি যুক্ত করুন, এবং স্ট্রিংয়ের মধ্যে একটি সূচক হিসাবে ফলাফলটি ব্যবহার করুন ' x', সুতরাং 0 এবং x1 এর জন্য স্থান রাখুন ।

1
আমি যত বেশি এপিএল পড়ি, ততই আমি বুঝতে পারি যে এপিএল একটি পার্সিং দুঃস্বপ্ন। (⍎⍵⌷'functions')পুরো বিবৃতিটি কীভাবে ব্যাখ্যা করতে হবে তার সিদ্ধান্ত নেওয়ার আগে কি অংশটি আসলে মূল্যায়ন করতে হবে না ? উদাহরণস্বরূপ বিবেচনা করুন 1+(⍵⌷'12+')|40। এমনকি এটি জেনে থাকতে পারে না যে এই প্রথম বন্ধনীযুক্ত অংশটি |আইএনএড করার আগে মোনাডিক বা ডায়াডিক কিনা । পুরো বিমূর্ত সিনট্যাক্স ট্রি মূল্যায়নের উপর নির্ভর করে পরিবর্তিত হয়।
protist

আমি বলতে চাইছিলাম 1+(⍎⍵⌷'12+')|40... আমাকে সম্পাদনা করতে দেবে না।
protist

2
@ প্রোপ্রিস্ট: মজাদার ঘটনা: f ← { [ }ত্রুটি দেয় না! f 1÷0দেয় ... একটি ডোমেন ত্রুটি ! (শূন্য দ্বারা বিভাজনের কারণে)। শুধু যখন আপনি ফাংশন কল মত f 123আপনি পেতে বাক্য গঠন ত্রুটি । দেখুন: imgur.com/jtmdi4B
মেরিনাস

সমস্ত দেবতার কসম !!!! যা আমার হৃদয়কে কিছুটা ভেঙে দেয়। আমি কিছু এপিএল দোভাষীকে নিয়ে খেলছি, এবং এটি বর্তমান বাস্তবায়নে একটি দুর্দান্ত মন্দ প্রদর্শন করে। Hahaha
protist

এটি প্রায় দেখে মনে হচ্ছে যে কোনও ধরণের কুৎসিত ম্যাক্রো-সম্প্রসারণ-এর মতো প্রক্রিয়া নিয়মিতভাবে ফাংশনগুলি স্থাপন করা হয়। এটি কিছুটা স্থানের পাঠ্য প্রসারকে নির্দেশ করবে।
protist

6

রুবি, 116 115 109 96

আমি আমার নিজস্ব সমাধান দিয়ে শুরু করব।

i=gets.split
s=i[0].to_i
(i[1]<?3?s.downto(1):1..s).map{|x|t=?x*x
puts /2|4/=~i[1]?t.rjust(s):t}

আমি কেবল জানি যে আমি প্রায় তাত্ক্ষণিকভাবে 30 টি চরিত্রের গল্ফস্ক্রিপ্ট সমাধান দ্বারা পরাজিত করব: পি

19 টি অক্ষর (বাহ) কেটে দেওয়ার জন্য মিনিটেককে ধন্যবাদ!


পরিবর্তে ==0, আপনি ব্যবহার করতে পারেন <1?x*xঅন্য একটি চরিত্র সংরক্ষণ করে। এছাড়াও, puts i[1]%2<1?t.rjust(s):t}ঠিক কৌতুক করবেন?
রাই-

হুম ... আপনার চারপাশে ফাঁকা জায়গা আছে ?? এটা কি প্রয়োজনীয়? এছাড়াও, আমি মনে করি আপনি একই সাথে একই জিনিসটি করতে পারেন r=
রাই-

@ মিনিটেক এটি প্রয়োজনীয় - শীর্ষস্থানীয় স্থান কারণ অন্যথায় এটি 1?একক টোকেন হিসাবে এবং পার্সিং স্পেস কারণ অন্যথায় এটি পার্স করে ?t(যা সমান 't')। আপনি কিভাবে rঅংশ পুনর্গঠন প্রস্তাব ?
ডুরকনব

তুমি কি চেষ্টা করেছ? রুবির কোন সংস্করণে? ২.০-তে আমার পক্ষে কাজ করে।
রাই-

@ এমনিটেক অদ্ভুত, এটি আগে কাজ করে না এবং এখন এটি করে: পি ধন্যবাদ
ডুরকনব

4

গল্ফস্ক্রিপ্ট ( 34 33 টি অক্ষর)

~\:^,{)' x'^*$>^<0(2$?%}%\(2&(%n*

এটি একটি লজ্জার বিষয় যে কোণগুলি ঘূর্ণায়ণে সংখ্যাযুক্ত নয়, কারণ এটি একটি অ্যারে তৈরির এবং আরও একবার ঘোরানোর আরও মার্জিত পদ্ধতির অনুমতি দেয় n:

~\:^,{)' x'^*$>^<}%{-1%zip}@)*n*

3

সি # - 195

using System;class P{static void Main(string[]a){int G=int.Parse(
a[0]),O=int.Parse(a[1]),L=O<3?0:G+1,F=O<3?-G:1;G=O%2>0?-G:G;for(;
F<L;F++)Console.Write("{0,"+G+"}\n","".PadRight(F<0?-F:F,'x'));}}

বিন্যাসকৃত:

using System;
class P
{
    static void Main(string[] a)
    {
        int G = int.Parse(a[0]),
            O = int.Parse(a[1]),
            L = O < 3 ? 0 : G + 1,
            F = O < 3 ? -G : 1;

        G = O % 2 > 0 ? -G : G;

        for(; F < L; F++)
            Console.Write("{0," + G + "}\n", "".PadRight(F < 0 ? -F : F, 'x'));
    }
}

এখানে চিত্র বর্ণনা লিখুন


ইনপুটটি স্থান-বিস্মৃত হতে হবে, কমা দ্বারা পৃথক নয়।
ডোরকনবব

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

2

Golfscript, 39 36 35 টি অক্ষর

~\:y,{' '*'x'y*+y<0~2$?%}%-1@2>?%n*

লাইভ ডেমো: http://golfscript.apphb.com/?c=OyczIDInCn5cOnkseycgJyoneCd5Kit5PC0xIDIkPyV9JS0xQDI%2BPyVuKgo%3D

অনুরোধ অনুসারে এটি 30 টি অক্ষর নয়


এর 1${-1%}*সাথে -1 2$?%এবং এর \2>{-1%}*সাথে প্রতিস্থাপন করা \2>-1\?%আপনাকে 2 টি অক্ষরের জাল দেবে।
অস্থিরতা

@ উদ্বোধন ধন্যবাদ, সংযুক্ত
জন ডিভোরাক

@ ভোলাটিলিটি -1 2লেখা যেতে পারে0~2
হাওয়ার্ড

এবং অন্য চরের জন্য আমাদের আরও কিছুটা পুনর্গঠন করতে হবে:~(\:y,{{>'x '=}+y,%0~2$?%}%\2&(%n*
হাওয়ার্ড

2

গণিত 122 (104?)

g@s_ := ({w, p} = ToExpression@StringSplit@s; 
   Array[If[Switch[p, 1, # <= (w + 1 - #2), 2, # <= #2, 3, # >= #2, 4, # > (w - #2)],
   "X", ""] &, {w, w}]) // Grid

GraphicsGrid[{{g["12 1"], g["12 3"]}}]

অন্য পদ্ধতি


"আউটপুট" এর উদার ব্যাখ্যার অধীনে নিম্নলিখিত (104 অক্ষর) কাজ করবে।

f@s_ := ({w, p} = ToExpression@StringSplit@s; 
  Graphics[Polygon@Delete[{{w, 0}, {0, 0}, {w, w}, {0, w}}, p], Axes -> True])


f["50 4"]

ত্রিভুজ


যদি একটি তালিকা আকারে ইনপুট অনুমোদিত হয়, নিম্নলিখিত (75 অক্ষর) যথেষ্ট হবে:

f[{w_, p_}] := 
 Graphics[Polygon@Delete[{{w, 0}, {0, 0}, {w, w}, {0, w}}, p], Axes -> True]


প্রযুক্তিগতভাবে এটি নিয়মের বিপরীতে: পি
ডুরকনব

এটি কোন নিয়ম লঙ্ঘন করে?
ডেভিডসি

আমি রাখি ইনপুট / আউটপুট চার্ট। 122 চর এক যদিও ভাল। আমি প্রশ্নটি স্পষ্ট করতে সম্পাদনা করেছি
ডুরকনব

উফ। আমি ভেবেছিলাম চার্টটি কেবল একটি উদাহরণ।
ডেভিডসি

আমি সবেমাত্র ASCII আর্ট সংস্করণটি প্রথম স্থানে রেখেছি।
ডেভিডসি

2

জে, 59 55 42 38 38 37 অক্ষর

প্রোগ্রামটির শেষে যদি ইনপুট রাখার অনুমতি দেওয়া হয়:

(|:@|.@]^:([:|[+_7*2<[)[:[\'x'$~])~/

যদি না হয় (অতিরিক্ত 3 টি অক্ষরের জন্য):

t=.(|:@|.@]^:([:|[+_7*2<[)[:[\'x'$~])~/

ব্যবহার:

   (|:@|.@]^:([:|[+_7*2<[)[:[\'x'$~])~/3 4
  x
 xx
xxx

অথবা

   t 3 4
  x
 xx
xxx

আমি মনে করি এটি মোটামুটি ছোট হতে পারে কারণ বেশিরভাগ চরিত্রগুলি বন্ধনী এবং ক্যাপগুলি এটিকে অন্তর্নিহিত শৈলীতে রাখার জন্য।

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

2 সম্পাদনা করুন
এটি কিছুটা বেশি পছন্দ। কত ঘূর্ণন প্রয়োজন তার তালিকার এজেন্ডা ডাম্পিং করা বেশিরভাগ অতিরিক্ত বন্ধনী এবং কয়েকটি ক্যাপ থেকে মুক্তি পাবে।

3 সম্পাদনা করুন
শেষ বহিরাগত টুপি এবং প্রক্রিয়াতে এক জোড়া বন্ধনী থেকে মুক্তি পেয়েছি। প্রয়োজনীয় ঘূর্ণনের সংখ্যা এনকোডিংয়ের একটি সস্তা উপায় খুঁজে পাওয়া দরকার।

4 সম্পাদনা করুন একটি অক্ষর কেটে ফেলার জন্য প্রত্যয়ের পরিবর্তে উপসর্গটি ব্যবহার করুন । তালিকা তৈরির ভিন্ন পদ্ধতি সক্ষম করে যা কোনও অক্ষর সংরক্ষণ করে না। দাত্ত।

5 সম্পাদনা করুন
অন্য একটি চরিত্র ছিন্ন করতে একটি সূত্র ব্যবহার করে। তবুও মনে হয় এই বিটটি আরও খাটো হতে পারে।


1

পাইথন 106 অক্ষর

w,d=map(int,raw_input().split())
for e in range(1,w+1)[::d/3*2-1]:print('%'+'-+'[d%2]+str(w)+'s')%('*'*e)

1

পাইথন 3, 91

অভিজিটের উত্তরের ভিত্তিতে।

স্ট্রিং এবং এর মধ্যে কুরুচিপূর্ণদের যোগফল এড়াতে আউটপুট স্ট্রিংয়ের তৈরির সংশোধন 1করেছে range। পাইথন 3 পরিত্রাণ পায় raw_মধ্যে raw_inputকিন্তু ব্যবহার করার জন্য প্রয়োজনীয় তোলে //পূর্ণসংখ্যা divison জন্য এবং জন্য parantheses যোগ করার জন্য print, যাতে শুধুমাত্র একটি অক্ষর পরিমাণ সঞ্চয় হয়।

w,d=map(int,input().split())
for e in range(w)[::d//3*2-1]:print('%*s'%(w-d%2*2*w,'x'*-~e))

0

বিড়ালছানা , 140

def s{><replicate}
getLine{' 'neChar}span{readInt fromSome}toBoth->{w n}
w 0 if(n 2>){><}..
{<>w>< -{'X's}{' 's}both if(n 2%0=){><}cat say}each

Ungolfed:

getLine
{' ' neChar} span
{readInt fromSome} toBoth
->{ width corner }

width 0
if (corner 2 >):
  swap
..

{ ->index
  'X' index replicate
  ' ' (width index -) replicate
  if (corner 2 % 0 =):
    swap
  cat say
} each

প্রমাণগুলি যে আমাকে ওভারলোডিং এবং মানক পাঠাগারটি কার্যকর করতে হবে implement

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