কুসংস্কার হোটেল লিফট


54

বিবরণ

এখানে সাংহাইয়ের একটি অতি কুসংস্কার হোটেল লিফট:

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

এটি ১৩ নম্বর এড়ায়, কারণ তেরোটি পশ্চিমা বিশ্বে দুর্ভাগ্য, এবং এটি ৪ সংখ্যাটি এড়িয়ে চলে, কারণ এশিয়ার কয়েকটি অংশে চারটি দুর্ভাগ্যজনক। এই হোটেলটি যদি লম্বা হত?

nমেঝে সংখ্যা উপস্থাপন করে STDIN থেকে ইতিবাচক এমনকি পূর্ণসংখ্যকটি পড়ুন এবং বোতামের বিন্যাসটি STDOUT এর মতো দেখতে মুদ্রণ করুন: -1পরবর্তী n-1ধনাত্মক পূর্ণসংখ্যাগুলি 13 এর সমান নয় এবং সংখ্যার 4 নেই these এগুলি সাজান উপরের চিত্রের মতো দুটি কলামে সংখ্যা: একটি অনুভূমিক ট্যাব দ্বারা পৃথক পৃথক প্রতি লাইন দুটি তল সংখ্যা মুদ্রণ করুন, যাতে বাম থেকে ডান থেকে বিপরীত ক্রমে লাইনগুলি পড়লে আরোহী ক্রম অনুসারে ক্রম হয়। (আপনি allyচ্ছিকভাবে একটি ট্রেলিং নিউলাইন চরিত্রও মুদ্রণ করতে পারেন))

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

ইনপুটটির জন্য 14, আউটপুট উপরের চিত্রের মতো হওয়া উচিত:

15  16
11  12
9   10
7   8
5   6
2   3
-1  1

যেখানে প্রতিটি লাইনের শ্বেত স্থানটি একক অনুভূমিক ট্যাব অক্ষর।

ইনপুট জন্য 2, আপনি মুদ্রণ করা উচিত -1 1

ইনপুট জন্য 100, আপনি মুদ্রণ করা উচিত:

120 121
118 119
116 117
113 115
111 112
109 110
107 108
105 106
102 103
100 101
98  99
96  97
93  95
91  92
89  90
87  88
85  86
82  83
80  81
78  79
76  77
73  75
71  72
69  70
67  68
65  66
62  63
60  61
58  59
56  57
53  55
51  52
39  50
37  38
35  36
32  33
30  31
28  29
26  27
23  25
21  22
19  20
17  18
15  16
11  12
9   10
7   8
5   6
2   3
-1  1

লক্ষ্য

এটি । বাইট জিতে সংক্ষিপ্ত উত্তর।


2
@ মরিস 6138, সম্ভবত না, তবে 113? আমি মনে করি কীটি হ'ল আপনি জোরে জোরে নম্বরটি পড়ার সময় "তের" বলবেন কিনা ।
র্যান্ডম 832

12
@ র্যান্ডম 832 আপনার পরামর্শ অনুসারে কার্যকরভাবে সুনির্দিষ্ট পরিবর্তনগুলি করা যায়। পিপিসিজি শিষ্টাচার উত্তরগুলি দেওয়ার পরে এই ধরনের পরিবর্তনকে নিরুৎসাহিত করে, বিশেষ করে যদি বিদ্যমান উত্তরগুলি কার্যকরভাবে অবৈধ করা হয়, তবে তারা এ ক্ষেত্রে হবে
ডিজিটাল ট্রমা

8
FWIW, 4 দুর্ভাগ্য নয়। 4 বিভিন্ন চীনা উপভাষা / ভাষায় কেবল "মরা" বা "মৃত্যু" এর সাথে খুব মিল।
slebetman

10
@slebetman আচ্ছা, হ্যাঁ, যে কেন 4 অপয়া নয়। এটি এখনও কুসংস্কার, যাই হোক না কেন মূল! তবে এটি কিছুটা অফ-টপিক হচ্ছে।
লিন

13
অপেক্ষা কর বোতামগুলি গণনা করে আমি দেখতে পাচ্ছি যে হোটেলটিতে ঠিক 13 তল রয়েছে (বেসমেন্ট বাদে)) আমি সেখানে থাকার কোনও উপায় নেই!
স্তর নদী সেন্ট

উত্তর:


8

পাইথ, 27 বাইট

jjLC9_c+_1.f&!@\4`ZnZ13tQ)2

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

পায় .first Q-1নম্বর যে ফিল্টার মেলে !=13এবং 4সংখ্যা স্ট্রিং উপস্থাপনা নেই। তারপরে এটি প্রিপেন্ডস -1, অর্ধেকে চপস, প্রতিটি ট্যাব ( C9) এর সাথে যোগ দেয় এবং নিউলাইন দ্বারা যোগ দেয়।


19

বাশ + সাধারণ ব্যবহারসমূহ, ৫১

seq 9$1|sed 13d\;/4/d\;1i-1|rs 0 2|sed $[$1/2]q|tac
  • seq সামনে অতিরিক্ত 9 টি সংখ্যার সাথে 1 থেকে N তে আরোহণের পূর্ণসংখ্যার উত্পন্ন করে - 64৪ বিট পূর্ণসংখ্যার ইনপুটের জন্য পর্যাপ্ত পরিমাণে
  • sedভাগ্যবান মেঝেগুলি এবং ফিল্টার -11 লাইন আগে সংযোজন
  • rs দুটি ট্যাব-বিভাজিত কলামে পুনরায় আকার দিন
  • sed N / 2 লাইনের পরে থামে
  • tac আউটপুট লাইন ক্রম বিপরীত

আমি তোমার জন্য 5 বাইট শেভ করতে পারেন - প্রতিস্থাপন sed $[$1/2]qপর rsসঙ্গে sed $1qএটা আগে। আমি মনে করি এটি পসিএক্স-শেলকেও উপযুক্ত করে তোলে।
টবি স্পিড

1
অবশেষে, পূর্ববর্তীটি 1ইনপুটগুলির কেবলমাত্র 0.9 passing n পাস করার জন্য ক্ষতিপূরণ করার পক্ষে যথেষ্ট হবে না (সংখ্যার 4সংখ্যা বাড়ার সাথে সাথে স্পারসার এবং স্পারসর প্রাপ্ত সংখ্যাগুলি)। তবে একবার আপনার হোটেলে কয়েক শতাধিক তল হয়ে গেলে আপনার সম্ভবত অন্যান্য সমস্যা হতে পারে যেমন নদীর গভীরতানির্ণয়কে কাজ করে রাখা, এবং কর্মীদের রোটাস সংগঠিত করা।
টবি স্পিড

@ টবিস্পাইট আপনার কাছে একটি স্পেস লিফটও থাকতে পারে :)
ডিজিটাল ট্রমা

@ টবিস্পাইট এমনকি সর্বাধিক স্বাক্ষরিত 64 বিট পূর্ণসংখ্যার সাথে ইনপুট হিসাবে (9223372036854775807), কেবলমাত্র 1 টির উপরিভাগ মাত্র (প্রায়) যথেষ্ট - কমপক্ষে আমার প্রাথমিক বেস 9 গণনা সহ। শেল $[]পাটিগণিতের কারণে উত্তরটির বাকি অংশগুলি যাইহোক এই সীমার মধ্যে সীমাবদ্ধ । আমি মনে করি যে প্রশ্নটিতে স্বেচ্ছাচারিত সুস্পষ্ট গাণিতিকের সুস্পষ্ট উল্লেখের অনুপস্থিতিতে এটি একটি যুক্তিসঙ্গত সীমাবদ্ধতা। নির্বিশেষে, আমি এখন কেবল নিরাপদ পাশে থাকার 9পরিবর্তে একটি উপসর্গ করছি 1
ডিজিটাল ট্রমা 21

10

জাভাস্ক্রিপ্ট ES6, 236 234 233 210 195 188 বাইট

একটি পুরো গুচ্ছ সংরক্ষণ করা হয়েছে 'বাইটস ইউএসফ্রেডসকে ধন্যবাদ!

function*জেনারেটর জন্য ব্যবহার করে । সম্ভবত এটি করার একটি ছোট উপায়, তবে এটি মজাদার ছিল। উপায় মজা। আমি বাজি দেব কিছু গল্ফিং করা যেতে পারে। এই অদ্ভুত সাদা জায়গার জিনিসগুলি ট্যাব।

z=prompt(i=x=0,l=[]);y=(function*(){while(i<z-x)yield(i?(/4/.test(i)||i==13?--x&&".":i):-1)+(0*++i)})();while(a=y.next().value)+a&&l.push(a);l.join`    `.match(/-?\d+  \d+/g).reverse().join`
`

z=+prompt(i=x=0,l=[]);==> z=prompt(i=x=0,l=[]);(-1 বাইট)
52-

@ ইউসুফ্রেন্ডস আপনাকে ধন্যবাদ! আমি স্বয়ংক্রিয় ধরণের রূপান্তর সম্পর্কে ভুলে গেছি।
কনর ওব্রায়ান

.joinট্যাব সহ স্থানটি প্রতিস্থাপন করুন এবং /-?\d+ \d+/gট্যাবটির সাথে স্থানটি প্রতিস্থাপন করুন .map(x=>x.replace(/ /,"\t"))(23 বাইট সংরক্ষণ করা উচিত)
বন্ধুরা

1
.filter(x=>x!=".0")==> .filter(x=>+x), (-5 বাইট)
বন্ধুরা

2
^ স্ক্র্যাচ করুন , কেবল পুরো .filter(..)অংশটি সরিয়ে দিন ! চেষ্টা করুন l.push(a);==> +a&&l.push(a);(-15 বাইটস)
বন্ধুরা

7

সি, 282 বাইট

int main(int r,char*v[]){int c=atoi(v[1]),a[c],b,E=1E9,g,i,t,o=t=g=(E)-2;while(i++<c){while(t>0){r=t%10;t=t/10;if(r==4||g==(E)+13||g<=o||g==E)t=++g;}a[i-1]=o=t=g;}for(c-=3;c>=0;c-=2){printf("%d\t",a[c+1]-E);printf("%d\n",a[c+2]-E);}printf("%d\t",a[0]-E);if(i%2)printf("%d",a[1]-E);}

ফর্ম্যাট করা:

int main ( int r , char * v[] ) {
    int c = atoi ( v[ 1 ] ) , a[c] , b , E = 1E9 , g , i , t , o = t = g = ( E ) - 2;
    while ( i ++ < c ) {
        while ( t > 0 ) {
            r = t % 10;
            t = t / 10;
            if ( r == 4 || g == ( E ) + 13 || g <= o || g == E )t = ++ g;
        }
        a[ i - 1 ] = o = t = g;
    }
    for ( c -= 3 ; c >= 0 ; c -= 2 ) {
        printf ( "%d\t" , a[ c + 1 ] - E );
        printf ( "%d\n" , a[ c + 2 ] - E );
    }
    printf ( "%d\t" , a[ 0 ] - E );
    if ( i % 2 )printf ( "%d" , a[ 1 ] - E );
}

বৈশিষ্ট্য:

এটি 2095984 তল পর্যন্ত গণনা করতে পারে, যদি প্রতিটি তল 19.5mবেশি হয় (সীমাবদ্ধ সিলিং) তবে এই বিল্ডিংটি নিরক্ষীয় অংশের চারপাশে জড়ানোর জন্য যথেষ্ট দীর্ঘ! 2095984*19.5=40871688m=~40000km=one 'lap' around the planet


1
উত্তম উত্তর, তবে আপনার ভূগোলটি কিছুটা বন্ধ। উত্তর মেরু থেকে বিষুবরেখা থেকে দূরত্ব সংজ্ঞা দ্বারা 10000km হয় en.wikipedia.org/wiki/Metre যার মানে বিষুবরেখা পরিধি 40000km উপর একটু হয়।
স্তরের নদী সেন্ট

1
দুর্দান্ত মন্তব্য, তবে মিটারটির আপনার সংজ্ঞাটি কিছুটা পুরানো। ;-)
মারফি

@ স্টিভেরিলিল আমি গুগল থেকে নামার প্রথম নম্বরটি ব্যবহার করেছি, আমি গণনাটি আপডেট করব।
x13

আপনি মূল থেকে "ইনট" বাদ দিয়ে কয়েকটি বাইট সংরক্ষণ করতে পারেন। E এর কাছাকাছি বন্ধনীগুলি কি সত্যিই প্রয়োজনীয়? প্রথমে whileরূপান্তর করা যায় forএবং এটি আপনাকে কিছু কোঁকড়া ধনুর্বন্ধনী ড্রপ করতে দেয়। t/=10চেয়ে বাইট খাটো t=t/10forএকটি দম্পতি বাইট -> a[c+1]হয়ে যায় সংরক্ষণ করতে আপনার লুপে 1 থেকে সি যুক্ত করুন a[c], অন্য সমস্ত সংখ্যার দৈর্ঘ্য একই। আমি printfলুপের মধ্যে দুটি গুলি একসাথে মিশ্রিত করব এবং আবার কোঁকড়ানো ধনুর্বন্ধনী বাদ দিলাম।
আরগায়ার

আমি মনে করি আপনার "তল উচ্চতা" এর সংজ্ঞাটি কিছুটা বন্ধ হতে পারে - একটি সাধারণ তল 19 মিটার লম্বা নয়, প্রায় 3 মিটার লম্বা।
nneonneo

6

জুলিয়া, 134 132 বাইট

x=[-1;filter(i->i!=13&&'4'"$i",1:2(n=parse(readline())))][1:n]
for i=2:2:endof(x) println(join((r=reverse)(r(x)[i-1:i]),"  "))end

সেখানে মজার শ্বেতক্ষেত্র একটি আক্ষরিক ট্যাব আছে। হিসাবে কোনোর ব্রায়েন উল্লিখিত এই কাজ চেয়ে বাইট খাটো \t

Ungolfed:

# Read an integer from STDIN
n = parse(readline())

# Generate all numbers from 1 to 2n, exclude 0, 13, and all numbers containing 4,
# prepend -1, then take the first n
x = [-1; filter(i -> i != 13 && '4'  "$i", 1:2n)][1:n]

# Loop over pairs, print tab-separated
for i = 2:2:endof(x)
    println(join(reverse(reverse(x)[i-1:i]), "  "))
end

6

পাইথন 2, 120 110 বাইট

N=input()
n=['-1']+[`i`for i in range(N*2)if i!=13and'4'not in`i`][1:N]
while n:x=n.pop();print n.pop()+'\t'+x

আমি মনে করি আপনি এর i-13পরিবর্তে ব্যবহার করতে পারবেনi!=13
12 মে 21

6

জাভাস্ক্রিপ্ট, 116 122

সম্পাদনা সংরক্ষিত 6 বাইট ধন্যবা @Neil

সাধারণ অ্যারে সমাধান - এমনকি ES6 ব্যবহার করে না

যে কোনও ব্রাউজার দিয়ে চেষ্টা করুন

/* test */ console.log=function(x){ O.innerHTML+=x+'\n'; }

n=prompt();for(r=[-1],v=1;n;v++)v!=13&!/4/.test(v)&&--n&&r.push(v);for(;r[0];)console.log(a=r.pop(b=r.pop())+'\t'+b)
<pre id=O></pre>


আপনি ব্যবহার করে 6 বাইট সংরক্ষণ করতে পারেন !/4/.test(v)
নিল

আপনি (আক্ষরিক ট্যাব) এর ' 'পরিবর্তে একটি একক বাইট সংরক্ষণ করতে পারেন'\t'
Mwr247

6

পাইথন 2 , 94 বাইট

n=input();c=-1;s=''
while n:
 if('4'in`c`)==0!=c!=13:n-=1;s=(n%2*'%d	%%d\n'+s)%c
 c+=1
print s

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

স্ট্রিংয়ে একটি ট্যাব চরিত্র রয়েছে যা এসই রেন্ডার করে না (এটি ব্যবহার করার পরামর্শের জন্য স্প 3000কে ধন্যবাদ, একটি বাইট সংরক্ষণ করে)।

cমেঝের -1কোটা nপৌঁছানো পর্যন্ত মেঝে থেকে শুরু টেস্ট ফ্লোর । প্রতিটি তলগুলির জন্য, পরীক্ষা করে যে এটিতে 4একটির সমান 0বা সমান বা থাকে না 13। যদি তা হয় তবে এটি লিফ্টের স্ট্রিংয়ে sপ্রেন্ডেন্ড করে কোটা হ্রাস করে n

স্ট্রিং ফর্ম্যাটিং সহ একটি কৌতুক প্রতি কলামে দুটি তলগুলি যথাযথভাবে হাজির হওয়ার পরে যথাযথ ক্রমে উপস্থিত হওয়ার জন্য ব্যবহার করা হয়। প্রতিটি নতুন লাইন প্রস্তুত করা হয় '%d\t%%d\n', যাতে দুটি তল যাতে ক্রমে প্রতিস্থাপন করা হয়, প্রথমটি বাম দিকে এবং দ্বিতীয়টি ডানদিকে থাকে। উদাহরণ স্বরূপ,

('%d\t%%d\n'%2)%3 == ('2\t%d\n')%3 == '2\t3\n'  

বেশ দুর্দান্ত, তবে এটি আসলে 96 বাইট । সম্ভবত পেছনের কমাটি মুছে ফেলবেন?
মোভাটিকা

2
@ মোভাত্তিকা ট্রেলিং কমাতে ভাল ধরা, যেহেতু চ্যালেঞ্জটি নির্দিষ্ট করে নতুন লাইনের অবস্থানটি ঠিক আছে। 1 বাইট পার্থক্যটি ছিল কারণ এসই কোড ব্লকটি ট্যাব প্রদর্শন করতে পারে না, তাই আমি একটিতে রেখেছি \t। আহা, টিআইওর অস্তিত্বের আগের দিনগুলি।
xnor

5

সি #, 296 বাইট

namespace System.Collections.Generic{using Linq;class X{static void Main(){var a=new List<int>();var b=new List<int>();for(int i=int.Parse(Console.ReadLine()),j=-2;i>0;)if(++j!=13&&j!=0&&!(j+"").Contains("4"))(i--%2<1?a:b).Insert(0,j);Console.Write(string.Join("\n",a.Zip(b,(x,y)=>x+"\t"+y)));}}}

Ungolfed:

namespace System.Collections.Generic
{
    using Linq;
    class X
    {
        static void Main()
        {
            var a = new List<int>();
            var b = new List<int>();
            for (int i = int.Parse(Console.ReadLine()), j = -2; i > 0;)
                if (++j != 13 && j != 0 && !(j + "").Contains("4"))
                    (i-- % 2 < 1 ? a : b).Insert(0, j);
            Console.Write(string.Join("\n", a.Zip(b, (x, y) => x + "\t" + y)));
        }
    }
}

গল্ফিং ট্রিকস ব্যবহৃত:

  • আমি (চলমান কাউন্টার) এবং (বিবেচনাধীন বর্তমান সংখ্যা) যথাযথ হিসাবে বিবৃতি হিসাবে লুপ বডি মধ্যে অভিব্যক্তি ভিতরে হ্রাস / বর্ধিত হয়
  • j+"" পরিবর্তে j.ToString()
  • সমস্ত কিছু namespace System.Collections.Genericকেবল ভিতরেই রাখুন যাতে আমরা অ্যাক্সেস করতে পারি না List<T>, তবে Systemআরও যোগ্যতা ছাড়াই স্পষ্টতই নেমস্পেসটি ব্যবহার করতে পারি
  • usingনেমস্পেসের অভ্যন্তরটি এমনভাবে রাখুন যাতে আমরা using Linq;পরিবর্তে লিখতে পারিusing System.Linq;
  • .Insert(0,j)ব্যবহার .Add(j)এবং পরে প্রয়োগের চেয়ে কম.Reverse()

এটি দুর্ভাগ্যজনক যে এটি using Linq;প্রয়োজনীয়, কারণ এটি কেবল প্রয়োজন .Zip, তবে এটি যেমন Linq.Enumerable.Zip()দীর্ঘায়িত হয় তেমন লিখতে হয়।


5

রুবি 2.3, 84 83 টি অক্ষর

(Characters২ টি অক্ষরের কোড + ১ টি অক্ষরের কমান্ড লাইন বিকল্প)

puts (["-1",*?1..?1+$_].grep_v(/^13$|4/)[0..$_.to_i]*?\t).scan(/\S+\t\d+/).reverse

নমুনা রান:

bash-4.3$ ruby -ne 'puts (["-1",*?1..?1+$_].grep_v(/^13$|4/)[0..$_.to_i]*?\t).scan(/\S+\t\d+/).reverse' <<< '14'
15      16
11      12
9       10
7       8
5       6
2       3
-1      1

রুবি, 93 92 টি অক্ষর

(91 টি অক্ষর কোড + 1 অক্ষর কমান্ড লাইন বিকল্প)

puts ([-1,*1..2*n=$_.to_i].reject{|i|i==13||i.to_s[?4]}[0..n]*?\t).scan(/\S+\t\d+/).reverse

নমুনা রান:

bash-4.3$ ruby -ne 'puts ([-1,*1..2*n=$_.to_i].reject{|i|i==13||i.to_s[?4]}[0..n]*?\t).scan(/\S+\t\d+/).reverse' <<< '14'
15      16
11      12
9       10
7       8
5       6
2       3
-1      1

4

লুয়া, 169 বাইট

t={-1}i=1 repeat if(i..""):find("4")or i==13 then else table.insert(t,i)end i=i+1 until #t==arg[1] for i=#t%2==0 and#t-1 or#t,1,-2 do print(t[i],t[i+1]and t[i+1]or"")end

মোটামুটি সোজা এগিয়ে, আমরা প্রথমে সমস্ত বোতামের মান ভরা একটি টেবিল একত্রিত করি। তারপরে আমরা এর মধ্য দিয়ে পিছনে পুনরাবৃত্তি করব, এক সাথে দুটি মান মুদ্রণ করব বা দ্বিতীয় মানটি উপস্থিত না থাকলে কিছুই হবে না।


4

গণিত, 105 বাইট

StringRiffle[Reverse[Select[Range[2#]-2,#!=13&&#!=0&&DigitCount[#,10,4]<1&][[;;#]]~Partition~2],"
","\t"]&

\tএকটি আসল ট্যাব অক্ষর দিয়ে প্রতিস্থাপন করুন ।


4

ব্র্যাচল্যাগ , 105 বাইট

,Ll?,Lbb:1{h_.|[L:I]hhH,I+1=J((13;J:Zm4),L:J:1&.;Lb:J:1&:[J]c.)}:[1:-1]c{_|hJ,?bhw,[9:J]:"~c~w
"w,?bb:2&}

সিএলপিএফডি সহায়তায় অনেক খাটো হত, এখানে আমাকে প্রথম সাব-প্রিকেটটিতে পুনরাবৃত্তভাবে পূর্ণসংখ্যার চেষ্টা করতে হবে।

এর আগে নতুন লাইনটি "w,?bb:2&}বাধ্যতামূলক, এটি প্রতিটি নতুন সারির মাঝে প্রিন্ট করা নতুন লাইন।


নিস! একটি প্রশ্ন: ব্র্যাচল্যাজে সমস্ত সংখ্যার গাণিতিকগুলি স্বয়ংক্রিয়ভাবে সিএলপি (এফডি) সীমাবদ্ধতা ব্যবহার করবেন না কেন ? এটি একটি প্রাকৃতিক যৌক্তিক এক্সটেনশন হবে।
মাদুর

@ ম্যাট কারণ আমি অলস এবং আমি করিনি। তবে আমার উচিত!
14:58 '

এইটা চমৎকার হবে! সমস্ত পূর্ণসংখ্যার গাণিতিকের জন্য অন্তর্নির্মিত অন্তর্নিহিত সিএলপি (এফডি) সীমাবদ্ধতা! ঘোষিত প্রোগ্রামিংয়ের ভবিষ্যত প্রশস্ত করুন! "এবং মোমের মতো সহস্রাব্দের দিকে আপনার হাত মুগ্ধ করার জন্য আপনার অবশ্যই অবশ্যই আশীর্বাদ বোধ করা উচিত mil
মাদুর

@ ম্যাট আপনি কি এই আলোচনা করতে এই চ্যাট রুমে যোগ দিতে পারবেন ? আমার চেয়ে প্রোলোগের সাথে স্পষ্টতই বেশি অভিজ্ঞ কারও কাছ থেকে আমার পরামর্শ নেওয়া উচিত।

3

সি #, 277 343

using System;using System.Collections.Generic;static void f(int v){List<int>a=new List<int>();List<int>b=new List<int>();int s=1;for(int i=-1;i<v-1;i++){if(i==13||i.ToString().Contains("4")||i==0){ v++;continue;}if(s==1){s=2;a.Add(i);}else{s=1;b.Add(i);}}a.Reverse();b.Reverse();int l=0;foreach(int y in a){Console.WriteLine(y+" "+b[l]);l++;}}

এটি কেবল একটি ফাংশন হিসাবে। আমি সি # তে নতুন। বৃদ্ধি 40-40 এর জন্য বৈধ করতে হবে, এবং usingএস অন্তর্ভুক্ত করার জন্য

সম্পূর্ণরূপে চলমান প্রোগ্রাম হিসাবে অসম্পূর্ণ:

using System;
using System.Collections.Generic;

class P {
    static void Main()
    {
        List<int> a = new List<int>();
        List<int> b = new List<int>();
        int v = Int32.Parse(Console.ReadLine());
        int s = 1;
        for (int i = -1; i < v - 1; i++)
        {
            if (i == 13 || i.ToString().Contains("4") || i == 0)
            {
                v++;
                continue;
            }
            if (s == 1)
            {
                s = 2;
                a.Add(i);
            }
            else {
                s = 1;
                b.Add(i);
            }
        }
        a.Reverse();
        b.Reverse();
        int l = 0;
        foreach (int y in a)
        {
            Console.WriteLine(y + " " + b[l]);
            l++;
        }
        Console.ReadLine();
    }
}

ব্যাখ্যা

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


আমি সি # অনেক জানি না কিন্তু আপনি প্রতিস্থাপন করতে পারেন if(s==1)দ্বারা if(s)(বুলিয়ান করার int- এ থেকে স্বয়ংক্রিয় ঢালাই?)
Fatalize

নাহ, কারণ অন্যটি s == 2 এর জন্য, যদিও আমি 1 এবং 2 এর পরিবর্তে পতাকা 0 এবং 1 বানাতে পারি I'll
গুজ

3

পাইথন 3, 155 বাইট

আমি মনে করি মেঝে নম্বর জেনারেটরকে অনুকূলকরণ, বিপরীত করা এবং স্ব-জিপ করা s()সম্ভবত নিজের ভালোর জন্য খুব চালাক হতে পারে, তবে অন্যরা ইতিমধ্যে বিকল্পটি (একসাথে দুটি জিনিস পপিং) করতে পেরেছে, পাইথন 2 ব্যবহারের কথা উল্লেখ না করে যা বাইটস সংরক্ষণ করে কিছু মূল বিষয়।

def s(m,n=-1):
 while m:
  if not(n in(0,13)or'4'in str(n)):yield n;m-=1
  n+=1
*f,=s(int(input()))
g=iter(f[::-1])
h=zip(g,g)
for a,b in h:print(b,'\t',a)

সংক্ষিপ্ত, তবে ইতিমধ্যে সম্পন্ন-উন্নত বিকল্প নিতে 140 বাইট লাগবে।

def s(m,n=-1):
 while m:
  if not(n in(0,13)or'4'in str(n)):yield n;m-=1
  n+=1
*f,=s(int(input()))
while f:a=f.pop();print(f.pop(),'\t',a)

দ্বিতীয় বিকল্পের জন্য, (0!=n!=13)!=('4'in str(n))5 বাইটের চেয়ে কম not(n in(0,13)or'4'in str(n))
মুভিটিকা

3

জাপট, 42 বাইট

JoU*2 k0 kD f@!Xs f4} ¯U ã f@Yv} w ®q'    } ·

চারটি স্পেসটি একটি আসল ট্যাব চর হওয়া উচিত। এটি অনলাইন চেষ্টা করুন!

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

          // Implicit: U = input integer, D = 13
JoU*2     // Create the range of integers [-1,U*2).
k0 kD     // Remove 0 and 13.
f@!Xs f4} // Filter out the items X where X.toString().match(/4/g) is not null, i.e. the numbers that contain a 4.
¯U ã      // Slice to the first U items, and generate all adjacent pairs of items.
f@Yv}     // Filter out the items where the index Y is odd. This discards every other pair.
w         // Reverse.
®q'\t}    // Join each item with tabs.
·         // Join the whole list with newlines.
          // Implicit: output last expression

3

লুয়া, 141 বাইট

n,s=1,'-1 1'function g()repeat n=n+1 until s.find(n,4)==z and n~=13 return n end for i=4,io.read(),2 do s=g()..' '..g().."\n"..s end print(s)

Ungolfed

n,s = 1,'-1'1' --n is the current floor number, S is the string to be printed
function g() --This function raises n to the next valid floor
    repeat --Same as while loop except it runs the following block before checking the expression
        n = n + 1 --Self-explanatory, increases n by one
    until --Checks the expression, if it is true, it breaks out of the loop
        s.find(n,4) == z --[[Strings have a member :find(X) where it finds the position of
                             X in the string (X can also be a pattern). However, calling it 
                             by .find(S,X) executes find on S with argument X. I can't 
                             directly do n:find(4) because n is a number. This is a "hack" 
                             (sort of) to cut down some bytes. Also, if X is not a string,
                             lua tries to (in this case, succeeds) cast X to a
                             string and then look for it. I check if this is equal to z
                             because z is nil (because it is undefined), and find returns
                             nil if X is not found in S.
                             TL;DR: Checks if 4 is not the last digit.]]
        and n ~= 13 --Self-explanatory, checks if n is not 13
        return n --Self-explanatory, returns n
end
for i = 4, io.read(), 2 do --[[Start at floor 3 (shows 4 because we're going by target
                               floor, not by starting floor), continue until we reach
                               floor io.read() (io.read returns user input), increment by
                               2 floors per iteration)]]
    s = g() .. ' ' .. g() .. "\n" .. s --[[Prepend the next floor, a space, the next floor,
                               and a newline to s]]
end
print(s) --Self-explanatory, output the string

এটি অনলাইনে চেষ্টা করে দেখুন (ইনপুট টাইপ করার আগে আপনাকে উপরের দিকে 'এক্সিকিউট' ক্লিক করতে হবে এবং তারপরে নীচে টার্মিনালটি ক্লিক করতে হবে; আমি স্টুডিন এবং স্টাডআউট দিয়ে লুয়া অনলাইন পরীক্ষা করার আরও ভাল উপায় খুঁজছি)


3

05 এ বি 1 ই , 25 23 22 বাইট

-1 বাইট ধন্যবাদ কেবলমাত্র ASCII- এর জন্য

·Ý<0K13Kʒ4å_}s£2ôR9çý»

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

ব্যাখ্যা

                           # Implicit input: integer n
·Ý<                        # Push list [-1,0,1,...,2n-1]
   0K                      # Remove 0 from [-1,0,1,...,2n-1]
     13K                   # Remove 13 from [-1,1,...,2n-1]
        ʒ4å_}              # Filter out every number containing a 4 from the list
             s£            # Pick out the n first element in the list
               2ôR         # Splice list into parts of length 2
                  9çý      # Join with tab character (ascii value 9)
                     »     # Join with newlines


আহ। আমি জানতাম যে কুশ্রী 0 13ªঅংশটি আরও ভাল করার একটি উপায় ছিল । ধন্যবাদ!
উইসোয়া

অপেক্ষা করুন। কোন যৌক্তিক এবং 05AB1E আছে? ও_ও
এএসসিআইআই-কেবল

1
যদি 1 টি সত্য হয় এবং 0 টি মিথ্যা হয় তবে গুণটি যৌক্তিক হিসাবে কাজ করে এবং
উইসোয়া

-1 বাইট এ পরিবর্তন ʒ4å_}করে 4мïê। পিএস: আপনার আগের মন্তব্যের ভিত্তিতে: পাশাপাশি 0 13ªথাকতে পারে could ¾13ª
কেভিন ক্রুইজসেন

3

সি ++ 11, 259 258 203 202 195 194 বাইট

1 টি বাইট স্ল্যাশড, পরিবর্তে আক্ষরিক ট্যাব ব্যবহার করার জন্য কনর ওব্রায়নের ধারণার জন্য ধন্যবাদ \t

ইউপিডি 2: উন্নত যুক্তি এবং কমা অপব্যবহারের সাথে 55 বাইট বন্ধ করে দিয়েছে।

ইউপিডি 3: সিলিংক্যাটকে ধন্যবাদ দিয়ে আরও একটি বাইট।

ইউপিডি 4: 7 সিলিংক্যাট সৌজন্যে বন্ধ।

ইউপিডি 5: এবং সিলিংক্যাট দ্বারা অন্য একটি বাইট অফ।

সব জায়গাতে অন্তর্ভুক্ত থাকায় খুশি এবং তবুও সি এবং সি # সমাধানগুলিকে বীট করে।

#include<iostream>
#include<string>
int main(){std::string o="-1    1",c,b;int n,i=2,s=2;for(std::cin>>n;s<n;o=i==14|~c.find(52)?o:(++s&1?b=c,"":b+'    '+c+'\n')+o)c=std::to_string(i++);std::cout<<o;}

Ungolfed:

#include <iostream>
#include <string>

int main()
{
    std::string o = "-1 1", c, b;
    int n, i = 2, s = 2;
    for (std::cin >> n;
         s < n;
         o = i == 14 | ~c.find(52) ? o : (++s & 1 ? b = c, "" : b + '   ' + c + '\n') + o
    )
        c = std::to_string(i++);
    std::cout << o;
}

iostreamঅন্তর্ভুক্ত রয়েছে string, যাতে আপনি বাইটোকন্টে বড় হ্রাসের জন্য দ্বিতীয়টি এড়িয়ে যেতে পারেন :)
মোভ্যাটিকা

@ মোভ্যাটিকা সিপ্রেফারেন্স ডট কম অনুসারে নয় এবং ভিএস ২০১৯-এ সংকলন এটি ব্যর্থ হয়। সুতরাং যদি এটি অন্য কোথাও সংকলিত হয় তবে এটি নির্দিষ্ট স্ট্যান্ডার্ড গ্রন্থাগার প্রয়োগের জন্য নির্দিষ্ট specific
আলেকজান্ডার রেভো

ঠিক আছে, মনে হয় এটি একটি জিসিসি জিনিস।
মোভাটিকা


2

জাভা, 333 বাইট

import java.util.*;interface E{static void main(String[]a){byte i=-1;Stack<Byte>s=new Stack<>();while(s.size()<Byte.valueOf(a[0])){if(i==13|i==0|String.valueOf(i).contains("4")){i++;continue;}s.add(i);i++;}if(s.size()%2!=0){System.out.println(s.pop());}while(!s.isEmpty()){int r=s.pop();int l=s.pop();System.out.println(l+"\t"+r);}}}

অনুমোদিত স্টোরের সংখ্যাগুলিকে একটি স্ট্যাকে যুক্ত করে তারপরে মুদ্রণের জন্য এগুলি পিছনে ফেলে।

আমি একটি ইন্টারস্ট্রিম ব্যবহার করে প্রায় খেললাম, তবে সমস্ত আমদানির সাথে এইটি আরও ছোট হয়ে গেল।



2

পাইথন 3, 117 বাইট

n=int(input())
l=[-1]+[i for i in range(n*2)if(i!=13)*(not'4'in str(i))][1:n]
while l:x=l.pop();print(l.pop(),'\t',x)

পাইথন 3 স্পেসিফিকেশন ফিট করার জন্য পাইথন 2 পোস্টের পরিবর্তিত সংস্করণ।


2

পাওয়ারশেল, 106 107 বাইট

$c=,-1+$(while($i+1-lt"$args"){if(++$c-notmatch'^13$|4'){$c;++$i}})
while($c){$a,$b,$c=$c;$s="$a    $b
$s"}$s

Ungolfed

# Calculate floors:
$c=,-1 # Array with one element
  +
  $( # Result of subexpression
    while($i+1-lt"$args"){ # Uninitialized $i is 0, +1 ensures loop start from 1
      if(
        ++$c-match'^13$|4' # Expression increments uninitialized $c (i.e. start from 1)
                           # and matches resulting number to regex.
      ){
        $c;++$i # Return $c and increment $i counter 
      }
    }
  )

# Print floors:
while($c){ # Loop until no more elements in $c
  $a,$b,$c=$c # Use PS's multiple assignment feature
              # $a - first element of $c array
              # $b - second element of $c array
              # $c - the rest of elements of $c array
  $s="$a    $b
$s" # Create string with tabs and newlines,
    # literal characters are used
}
$s # Output resulting string

উদাহরণ

PS > .\Elevator.ps1 14
15  16
11  12
9   10
7   8
5   6
2   3
-1  1

2

হাস্কেল 202 বাইট

t=(-1):[x|x<-[1..],x/=13,all (/='4')(show x)]
by2 []=[[]]
by2 [a]=[[a]]
by2 [a,b]=[[a,b]]
by2 (a:b:xs)=[a,b]:(by2 xs)
main=do
 n<-getLine
 putStr$unlines$map unwords$by2$map show$reverse$take(read n) t

আমি হ্যাশেল শিক্ষানবিশ…

  • প্রথমে মানগুলির অসীম তালিকা তৈরি করুন। (টি তালিকা)
  • ফাংশন 2 দ্বারা 2 টি উপাদানের সাবলিস্টে তালিকা তৈরি করুন।
  • প্রধান মান নিতে।
    • টি তালিকার মান উপাদান নিন
    • প্রথমে গ্রেটার উপাদান থাকতে তালিকার বিপরীত করুন
    • মানচিত্র প্রদর্শন ফাংশন স্ট্রিং তালিকায় ইন তালিকাটি রূপান্তর করতে
    • বাই ফাংশন সহ গ্রুপ এলিমেন্ট 2 বাই 2
    • আমাদের [["4", "5"], ["6", "7"]] ["4 5", "6 7"] এর মতো রূপান্তরিত তালিকার সাথে আনওয়ার্ড ফাংশন ম্যাপযুক্ত রয়েছে
    • তালিকাটি আনলাইন করে (তালিকার প্রতিটি উপাদান '\ n' দ্বারা পৃথক)
    • টার্মিনালে স্ট্রিং লিখতে putStrLn দিয়ে শেষ করুন।

আপনি by21 অক্ষরের নাম ব্যবহার করে পুনরায় ক্রম দিয়ে সংজ্ঞায়িত করতে বেশ কয়েকটি বাইট সংরক্ষণ করতে পারেন : তার পরে আপনার শেষ লাইনটি ব্যবহার করুন b x = [x]
বলস্টে 25

2

জাভাস্ক্রিপ্ট ES6 114 বাইট

n=>[...Array(n)].map(_=>{while(/^13$|4|^0/.test(++i));return i;},i=-2).join`    `.match(/-?\d+  \d+/g).reverse().join`\n`

ব্যবহার

f=n=>[...Array(n)].map(_=>{while(/^13$|4|^0/.test(++i));return i;},i=-2).join`  `.match(/-?\d+  \d+/g).reverse().join`\n`

চ (100);


2

পার্ল 6 , 73 বাইট

{.join("    ").say for (-1,|grep {$_-13&!/4/},1..Inf)[^$_].rotor(2).reverse}

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



2

জেলি , 20 বাইট

ḟ13D_4Ȧµ#o-s2Ṛj€9Ọ¤Y

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

কিভাবে?

ḟ13D_4Ȧµ#o-s2Ṛj€9Ọ¤Y - Main Link: no arguments
        #            - start at n=0 and collect the first INPUT values which are truthy under:
       µ             -   the monad (i.e. f(n)):        e.g.:    0      3      4      13     42        813
ḟ13                  -     filter out thirteens                 [0]    [3]    [4]    []     [42]      [813]
   D                 -     convert to decimal lists             [[0]]  [[3]]  [[4]]  []     [[4,2]]   [[8,1,3]]
    _4               -     subtract four (vectorises)           [[-4]] [[-1]] [[0]]  []     [[0,-2]]  [[4,-3,-1]
      Ȧ              -     any & all?                           1      1      0      0      0         1
         o-          - logical OR with -1 (replace floor 0 with floor -1)
           s2        - split into twos
             Ṛ       - reverse
                  ¤  - nilad followed by link(s) as a nilad:
                9    -   literal nine
                 Ọ   -   to character (a tab)
              j€     - join €ach
                   Y - join with newlines
                     - implicit print

1

জাভাস্ক্রিপ্ট (ES6), 151 146

alert([for(a of Array((n=+prompt(i=0))*2).keys())if((i+=t=/4/.test(a)||a==13,!t&&a<n+i))a].reduce((a,b,j,r)=>j%2-1?(b||-1)+`  ${r[j+1]}
`+a:a,''))

আমি বুঝতে পেরে এর আগে কি এডসি 65 ইতিমধ্যে একটি সংক্ষিপ্ত তৈরি করেছে। আচ্ছা ভালো!


1

আর , 106 বাইট

n=scan();x=-1:n^2;x=x[-grep(4,x)][-14][-2][n:1];cat(paste0(matrix(x,2,n/2)[2:1,],c("	","\n"),collapse=""))

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

1n2n3n9c("\t","\n")\t

n=scan();                                        # read number of floors n
x=-1:n^2;                                        # initial vector of numbers
x=x[-grep(4,x)]                                  # remove floors with a 4
               [-14]                             # remove floor 13
                    [-2]                         # remove floor 0
                        [n:1];                   # keep lowest n remaining floors, highest to lowest
cat(paste0( 
  matrix(x,2,n/2)                                # split vector of floors into 2 rows
                 [2:1,],                         # take row 2 then row 1
                        c("   ","\n"),           # separate integers with alternating tabs and newlines (uses recycling)
                                    collapse=""))

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