আমার জন্মদিনের থিম: আগুনের শিখায়


18

আমার কিছু মোমবাতি জ্বালানো দরকার। আসলে, আমার একটি নির্বিচার পরিমাণ মোমবাতি জ্বালানো দরকার। তবে শুধুমাত্র ভাল।

OBJECTIVE লেখার একটা ব্লক দেওয়া (সম্বলিত শয়নকামরা বৈধ, এবং অবৈধ মোমবাতি) এবং একটি সংখ্যা Nইনপুট হিসাবে, একটি প্রোগ্রাম বা ফাংশন যা একটি পরিমাণ ঠিক করতে সমান লাইট লিখতে N, বিয়োগ ইতিমধ্যে সুন্দর মোমবাতি সংখ্যা। যদি Nবৈধ মোমবাতিগুলির সংখ্যার চেয়ে বেশি হয় তবে প্রোগ্রামটি অনুপস্থিত, বৈধ মোমবাতিগুলির সংখ্যা মুদ্রণ করবে। কোনও মোমবাতি উপস্থিত না থাকলে আউটপুট হওয়া উচিত :(

এখানে কিছু বৈধ মোমবাতি রয়েছে:

.   
|   .       .
|   |   .   \
|   |   |   /

( .শুধুমাত্র |বা ভারসাম্যযুক্ত এমন একটি দিয়ে সমাপ্তি , অগত্যা সংলগ্ন নয় \এবং /এটি কোনও দৈর্ঘ্যের হতে পারে))

এখানে কিছু অবৈধ মোমবাতি রয়েছে:

.       .   .   .
\       |   |   |
|           |   |
\   .   |   !   

(ভারসাম্যহীন \, কোনও মোমবাতি স্টিক, সংযোগ বিহীন , অক্ষরহীন , |মাটিতে লাগানো নেই))

একটি আলোকিত মোমবাতি .নীচের যে কোনও অক্ষর (আপনার পছন্দ) এর সাথে একটি বৈধ মোমবাতিতে প্রতিস্থাপন করবে :

@ ^ & " ~

আপনাকে অবশ্যই কমপক্ষে একটি ব্যবহার করতে হবে -10%এবং আপনার প্রোগ্রামে ব্যবহৃত প্রতিটি চরিত্রের জন্য একটি বোনাস পাবেন , যাতে প্রতিটি অক্ষর একটি আলোকিত মোমবাতিতে উপস্থিত হতে পারে। আপনি যদি 🔥ইমোজি ব্যবহার করেন তবে আপনি একটি -15বাইট বোনাস পাবেন যা ব্যবহারের ক্ষেত্রে শতাংশ বোনাসের আগে প্রয়োগ করা হয়। বাইট কাউন্ট ডাউন ডাউন!

এটি একটি , তাই বাইটের মধ্যে সংক্ষিপ্ততম কোডটি জয়ী।

উদাহরণ IOs

input: 8,
.         .
| . ! . . |.  . . .
| | | | | | | | | |
output:
@         @
| @ ! @ @ |.  @ @ @
| | | | | | | | | |
input: 14,
   // nothing
output: :(
input: 15,
.   ..  . .  ". .
| . ||  | |  || !
output: 9 // more candles required; 15 - (6 unlit) = 9 (thanks to @AndersKaseorg for catching my mistakes (plural)!)
input: 7,
.
/        ~
|        \  .
/  &   " /  |
\  | @ | | . . . . .
\  | | | | | 1 l I |
output: 
&
/        ~
|        \  .
/  &   " /  |
\  | @ | | ^ . . . 🔥
\  | | | | | 1 l I |
input: 5,
. .             |
i Q no candl es . |3-.
output: :(

লিডারবোর্ড

নিয়মিত লিডারবোর্ড এবং ভাষার দ্বারা বিজয়ীদের একটি সংক্ষিপ্ত বিবরণ উভয়ই তৈরি করতে এখানে একটি স্ট্যাক স্নিপেট।

আপনার উত্তরটি প্রদর্শিত হয়েছে তা নিশ্চিত করার জন্য, দয়া করে নীচের মার্কডাউন টেম্পলেটটি ব্যবহার করে আপনার উত্তরটি শিরোনাম দিয়ে শুরু করুন:

# Language Name, N bytes

Nআপনার জমা দেওয়ার আকারটি কোথায় ? আপনি যদি নিজের স্কোরটি উন্নত করেন তবে আপনি পুরানো স্কোরগুলি শিরোনামে রেখে দিতে পারেন । এই ক্ষেত্রে:

# Ruby, <s>104</s> <s>101</s> 96 bytes

যদি আপনি নিজের শিরোনামে একাধিক সংখ্যা অন্তর্ভুক্ত করতে চান (যেমন আপনার স্কোর দুটি ফাইলের সমষ্টি বা আপনি পৃথকভাবে দোভাষী পতাকা দণ্ডের তালিকা করতে চান), নিশ্চিত করুন যে আসল স্কোরটি শিরোনামের শেষ সংখ্যা:

# Perl, 43 + 2 (-p flag) = 45 bytes

আপনি ভাষাটির নামটিকে একটি লিঙ্কও বানাতে পারেন যা লিডারবোর্ড স্নিপেটে প্রদর্শিত হবে:

# [><>](http://esolangs.org/wiki/Fish), 121 bytes


ওহ, এবং এটি আমার জন্মদিন।
কনর ও'ব্রায়েন

10
শুভ জন্মদিন!
স্তর নদী সেন্ট

@ স্টিভেরিলিল ধন্যবাদ ^ _ ^
কনর ও'ব্রায়েন

আমরা কি অনুমান করতে পারি যে ইনপুটটি একটি আয়তক্ষেত্র গঠনের জন্য ফাঁকা জায়গায় প্যাডযুক্ত?
ডাউনগোট

উত্তর:


4

হাস্কেল, ⌊ (269 বাইট - 15) · 0.9⁵⌋ = 149

h('.',0)(e:f,c,o)=(f,2:c,e:o)
h(k,b)(f,c,o)|Just x<-lookup k$zip"\\|/"[4,0..]=(f,x+2*div b 2:c,k:o)|0<1=(f,2:c,k:o)
g l(f,c,o)=foldr h(f,[],'\n':o)$zip l c
d("",_,o)=o
d('@':_,_,_)=":("
d(f,_,_)=show$length f
f n=d.foldr g(take n$'@':cycle"🔥^&\"~",repeat 1,"").lines

উদাহরণ রান:

*Main> putStr s
.
/        ~
|        \  .
/  &   " /  |
\  | @ | | . . . . .
\  | | | | | 1 l I |
*Main> putStr (f 3 s)
^
/        ~
|        \  .
/  &   " /  |
\  | @ | | 🔥 . . . @
\  | | | | | 1 l I |

ধরে নিন যে প্রতিটি ইনপুট লাইন কমপক্ষে আগের লাইনের মতো দীর্ঘ, যতক্ষণ না কোনও লেখকের মন্তব্যের অনুমতি রয়েছে।


দেখে মনে হচ্ছে আমাদের নতুন 1 ম স্থান আছে!
কনর ও ব্রায়েন

5

পাইথন 2, 529 বোনাস সহ বাইটস, 303

  • ধরে নেওয়া যায় যে প্রথম লাইনের একটি পূর্ণসংখ্যা রয়েছে।
  • ধারাবাহিক ব্যবধান অনুমান করে না। ধরে নেই মোমবাতিদের কলামটি খালি আছে।

কৌশল:

  • তালিকা হিসাবে ইনপুট পান।
  • এটিকে বিপরীত করুন এবং কলামগুলির তালিকায় এটি মানচিত্র করুন।
  • পরীক্ষা এবং পরিচালনা।
  • এটিকে আবার সারিগুলিতে মানচিত্র করুন, এটিকে বিপরীত করুন, লাইনে যুক্ত করুন।

import re;R=raw_input;C=str.count;G=lambda x:[y if y else' 'for y in x];H=lambda x:[''.join(G(v))for v in map(None,*x)];F=re.findall;t,r,i,g,d=0,u"🔥~\"&^@",[],r'^[|/\\]+[%s](?=\s|$)',R()
while d:i+=[d];d=R()
c=int(F('\d+',i.pop(0))[0]);i=i[::-1];m=H(i)
t+=sum(1 for x in m if F(g%r,x))
for p,n in enumerate(m):
 try:b=F(g%'\.',n)[0]
 except:continue
 if C(b,'/')==C(b,'\\')and t<c:t+=1;m[p]=re.sub('\.',r[0],n,1)
 if len(r)>1:r=r[1:]
m='\n'.join(H(m)[::-1])
d=":("if t<1 else`c-t`+" more candles required"if t<c else m;print d

পরীক্ষা:

5,
*      *               *
  *        *
*
                 *
@     @       @     @
|     |   .   |     |
|     |   |   |     |

*      *               *
  *        *            
*                       
                 *      
@     @       @     @   
|     |   🔥  |     |   
|     |   |   |     |   

3,
. . .       
| \ |

1 more candles required

3,  
. . .

. .      .
| |      |

. . .     

🔥 ~      "
| |      |

আপনি কি বোনাসের আগে এবং পরে স্কোরটি স্পষ্ট করতে সম্পাদনা করতে পারেন এবং বাইট-কাউন্টটি মন্তব্য সহ বা না করেই আছে কি না?
কনর

আমি আরও গল্ফ চেষ্টা করছি। এবং আমি পাইথ সংস্করণ চেষ্টা করতে চাই।
ব্যবহারকারী 193661

1
শান্ত! ধন্যবাদ। শুভকামনা পাইথের সাথে! ^ _ ^
কনর ও'ব্রায়ান

1
আপনি কেন সমস্ত মন্তব্য, নিউলাইনগুলি ইত্যাদি থেকে মুক্তি পাবেন না?
আরকে

আপনি আরও "মোমবাতি প্রয়োজনীয়" বিট থেকে মুক্তি পেতে পারেন; একটি সংখ্যাগত আউটপুট এইভাবে ধরে নেওয়া হয়।
কনর ও'ব্রায়েন

3

জাভাস্ক্রিপ্ট (ES6), 328 বাইট (স্কোর: 184)

আমি হাস্কেল সলিউশনটি বীট করার চেষ্টা করেছি তবে এটি ঘটতে হবে এমন সমস্ত যুক্তি দিয়ে দেওয়া একটি বাস্তব প্রতিযোগিতামূলক এন্ট্রি।

স্কোর হিসাবে Math.floor((328-15)*Math.pow(0.9,5))গণনা করা হয়েছে:, ইউটিএফ -8 এনকোডিং সহ একটি ফাইলে গণনা করা বাইটস, পরীক্ষা করা হয়েছে এবং এর সাথে নিশ্চিত হয়েছে io.js --harmony_arrow_functions

সমাধান :

eval("(n,s)=>{q=x=>x[0].map((_,c)=>x#[c]));h='Q';c=5;t=n;m=q(s.split('\\n')X#.match(/^ *[Q][\\\\//|]+$/)&&xR\\L==xR/L&&t-->0?xR./,c>1?h[c--]:'@'):x);return t==n?':(':t>0?1+t:q(mX.join('\\n')R@/,'🔥')}"[k='replace'](/[A-Z]/g,x=>({X:"#.split('')))#.join(''))",R:"[k](/\\",Q:'.@^&"~',L:"/g,'').length"}[x]))[k](/#/g,'.map(x=>x'))

প্রয়োজনীয়তা : আয়তক্ষেত্রাকার হতে অ্যারেটি অবশ্যই স্থান-প্যাডযুক্ত হতে হবে।

ব্যাখ্যা : সমস্ত বুদ্ধিমান উন্মাদতা একটি ভেরিয়েবল সেট করে ( কিছু বাইট সংরক্ষণের kজন্য স্ট্রিংয়ের ভেরিয়েবল replace) এবং একটি 339-বাইট স্ট্রিংয়ের 11 বাইট শেভ করে, যা আমি গল্ফকে আন-গল্ফ করতে পারি:

(num_candles_desired, string) => {
    transpose = array => array[0].map((_, index) => array.map(row => row[index]));
    candle_tips = '.@^&"~';
    c = 5; // decrementing index into candle_tips when > 1.
    candles_left = num_candles_desired;
    transposed_normal_output = transpose(
            string.split('\n').map(line => line.split(''))
        ).map(col_array => col_array.join(''))
         // the next map does the actual logic: finds possible candles with
         // a regex, checks that the \ chars match the / chars in number,
         // then decrements the candles_left index while changing the . to a
         // lit flame.
         .map(col => col.match(/^ *[.@^&"~][\\//|]+$/) 
                   && col.replace(/\\/g,'').length == col.replace(/\//g,'').length
                   && candles_left-- > 0 ? x.replace(/\./, c > 1 ? candle_tips[c--] 
                                                                 : '~')
                                         : x);
    return candles_left == num_candles_desired ? ':('
                  : candles_left > 0 ? 1 + candles_left 
                  : transpose(
                        transposed_normal_output.map(col => col.split(''))
                    ).map(row_array => row_array.join('')).join('\n')
                     // as promised, we include the emoji at least once if we can.
                     // the leading backslash is unnecessary and comes from the
                     // above metaprogramming-compression with eval().
                     .replace(/\@/,'🔥')
}

উদাহরণস্বরূপ যেহেতু আমাকে / ওসকে অনুরোধ করা হয়েছিল, আমি এখানে পরীক্ষার স্যুটটি চালিয়েছি,

Reference example #1, lighting 8 candles...
Input:
.         .        
| . ! . . |.  . . .
| | | | | | | | | |
Output:
~         🔥        
| " ! & ^ |.  @ @ @
| | | | | | | | | |
Reference example #2, lighting 14 candles...
Input:

Output:
:(
Reference example #3, lighting 15 candles...
Input:
.   ..  . .  ". .
| . ||  | |  || !
Output:
9
Reference example #4, lighting 7 candles...
Input:
.                   
/        ~          
|        \  .       
/  &   " /  |       
\  | @ | | . . . . .
\  | | | | | 1 l I |
Output:
~                   
/        ~          
|        \  .       
/  &   " /  |       
\  | 🔥 | | @ . . . @
\  | | | | | 1 l I |
Reference example #5, lighting 5 candles...
Input:
. .             |     
i Q no candl es . |3-.
Output:
:(

আই / ওএস এর কিছু উদাহরণ?
কনর ও'ব্রায়েন

1
@ CᴏɴᴏʀO'Bʀɪᴇɴ যোগ করা হয়েছে।
সিআর ড্রস্ট
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.