দরজা দরজা দরজা, দরজা স্টোর থেকে নামুন!


9

চ্যালেঞ্জ দ্বিগুণ:

এমন একটি প্রোগ্রাম তৈরি করুন যা একটি দরজা তৈরি করে। এএসসিআইআই, এইচটিএমএল বা অন্যথায়

দরজাটি কার্যক্ষম করুন। খোলে এবং বন্ধ হয়

হয় ইনপুট বা মিথস্ক্রিয়া মাধ্যমে উন্মুক্ত!

  • অ-কার্যকরী দরজা +5 পয়েন্ট।
  • কেবল একটি উন্মুক্ত দরজা +10 পয়েন্ট।
  • ইন্টারেক্টিভ দরজা +15 পয়েন্ট।
  • অভিনব দরজা +20 পয়েন্ট। এর অর্থ ঘোরাফেরা, দ্বিখণ্ডিত ইত্যাদি
  • অ্যানিমেটেড +20 পয়েন্ট।
  • <100 অক্ষর +50 পয়েন্ট।
  • অঙ্কন বা অ্যানিমেশনের জন্য বিশেষভাবে ডিজাইন করা একটি প্রোগ্রাম ব্যবহারের জন্য -100 পয়েন্ট।

আপনার যদি মানদণ্ডের পরামর্শ থাকে তবে তাদের মন্তব্যগুলিতে রেখে দিন।

অ-কার্যকরী মুক্ত দরজার উদাহরণ:

<?php
$idiots_in_room=true;

if($idiots_in_room)
{

$count=20;
$count2=7;
for($i=0;$i<$count;$i++)
{

if($i==0)
{
echo str_repeat("-",10);
if($i==0){echo ".";}
echo "\n";
}
elseif($i==9)
{
echo str_repeat("-",10);
echo str_repeat(" ",7)."o"."|";
echo "\n";
}
elseif($i<=9)
{

echo str_repeat("-",1).str_repeat(" ",8).str_repeat("-",1);

echo ($i<5) ? str_repeat(" ",$i*2)."\\" : str_repeat(" ",8)."|";
echo "\n";
}
elseif($i<=14)
{
if($i>9){echo str_repeat(" ",$i)."\\";}
echo str_repeat(" ",$count2--)."|";
echo "\n";
}

}
}

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

----------.
-        -  \
-        -    \
-        -      \
-        -        \
-        -        |
-        -        |
-        -        |
-        -        |
----------       o|
          \       |
           \      |
            \     |
             \    |
              \   |

আপনার কোনও দরজার উদাহরণ আছে?
beary605

@ beary605 অ-কার্যকরী উদাহরণ সরবরাহ করা হয়েছে
ইভেন্ট_হরিজন

2
একটি "দরজা" সংজ্ঞায়িত করুন
জোয়েল করনেট

দরজাগুলির জন্য ASCII কোডের জন্য বাহ্যিক ফাইলগুলি (বা চিত্রগুলি) ব্যবহার সম্পর্কে কী? তারা কীভাবে গণনা করবে?
জাজপিপি

উত্তর:


22

জাভাস্ক্রিপ্ট, 4380 অক্ষর, 65 (?) পয়েন্ট

হওয়া ASCII? পরীক্ষা করে দেখুন। এইচটিএমএল? পরীক্ষা করে দেখুন। একটি দরজা হয়? পরীক্ষা করে দেখুন। খোলা দরজা? পরীক্ষা করে দেখুন। ইন্টারেক্টিভ? পরীক্ষা করে দেখুন। শৌখিন? সঠিকভাবে অবস্থিত কব্জাগুলি সহ ডাবল দরজা, আমি আশা করি এটি গণনা করা। অ্যানিমেটেড? পরীক্ষা করে দেখুন। 100 টি অক্ষরের নীচে? হা। অঙ্কন জন্য উদ্দেশ্যে সুবিধাগুলি ব্যবহার করছেন না? পরীক্ষা করে দেখুন।

সরাসরি নমুনা. (দ্রষ্টব্য: ফায়ারফক্সের সাথে আমার পরীক্ষায়, একবারে দরজা ক্লিক করা একাধিকবার কাজ করে না - কিছু কারণের কারণে ইভেন্ট হ্যান্ডলারটি আবার গুলি চালায় না এবং আমি কেন বিভ্রান্ত হয়েছি; আমি কী ভুল করেছি তা নির্দেশ করে স্বাগত জানানো হবে। যদিও, আপনি সম্ভবত শালীন জেএস পারফরম্যান্সের জন্য এটি ক্রোমে চালনা করতে চাইতে পারেন might)

<title>Door</title>
<pre onmouseup="turn();" style="display: table; margin: auto; font-family: 'Monaco', monospace; font-size: 0.6em; line-height: 0.7em;">
</pre>
<p>Click doors to open or close.</p>
<script>

  // Appearance of hit surface - global used to avoid allocating a record to return
  var mat;

  // Scene construction tools
  function box(size,ms) {
    return function (x, y, z) {
      var vdist0 = Math.abs(x) - size[0];
      var vdist1 = Math.abs(y) - size[1];
      var vdist2 = Math.abs(z) - size[2];
      mat = vdist0 > vdist1 && vdist0 > vdist2 ? ms[0] :
            vdist1 > vdist0 && vdist1 > vdist2 ? ms[1] :
            ms[2];
      return Math.max(vdist0, vdist1, vdist2);
    };
  }
  function translate(vec, obj) {
    var dx = vec[0];
    var dy = vec[1];
    var dz = vec[2];
    return function (x, y, z) { return obj(x - dx, y - dy, z - dz); };
  }
  function mirror(obj) {
    return function (x, y, z) { return obj(-x, y, z); };
  }
  function spin(obj) {
    return function (x, y, z) {
      var a = Date.now() / 1000;
      var s = Math.sin(a);
      var c = Math.cos(a);
      return obj(
        x * c + z * s,
        y,
        x * -s + z * c
      );
    };
  }
  function doorturn(obj) {
    return function (x, y, z) {
      var a = pos;
      var s = Math.sin(a);
      var c = Math.cos(a);
      return obj(
        x * c + z * s,
        y,
        x * -s + z * c
      );
    };
  }
  function rotx(a, obj) {
    return function (x, y, z) {
      var s = Math.sin(a);
      var c = Math.cos(a);
      return obj(
        x,
        y * c + z * s,
        y * -s + z * c
      );
    };
  }
  function roty(a, obj) {
    return function (x, y, z) {
      var s = Math.sin(a);
      var c = Math.cos(a);
      return obj(
        x * c + z * s,
        y,
        x * -s + z * c
      );
    };
  }
  function union(as, bs) {
    return function (x, y, z) {
      var a = as(x, y, z); var am = mat;
      var b = bs(x, y, z);
      if (a < b) {
        mat = am;
        return a;
      } else {
        return b;
      }
    };
  }

  // Display parameters
  var vw = 80, vh = 80;
  var timestep = 1/30;

  // Scene
  var wallhwidth = 30;
  var wallhheight = 35;
  var wallmat = [";", "\u2014", ":"];
  var dhwidth = 10;
  var dhheight = 20;
  var hthick = 2;
  var door = translate([-dhwidth*2, 0, 0], doorturn(translate([hthick, 0, dhwidth], box([hthick, dhheight, dhwidth], [".", "\u2014", "|"]))));
  var doors = union(door, mirror(door));
  var wall = union(
    union(
      translate([dhwidth*2+wallhwidth, 0, -hthick], box([wallhwidth, wallhheight, hthick], wallmat)),
      translate([-dhwidth*2-wallhwidth, 0, -hthick], box([wallhwidth, wallhheight, hthick], wallmat))),
    translate([0, wallhheight-(wallhheight-dhheight)/2, -hthick], box([dhwidth*2, (wallhheight-dhheight)/2, hthick], wallmat)));
  var floor = translate([0, -dhheight - 1.1, 0], box([100, 1, 100], ["/","/","/"]));
  var sill = translate([0, -dhheight - 1, -hthick], box([dhwidth*2, 1, hthick], ["\\","%","\\"]));
  var sbox = translate([0, 0, -12], spin(box([8, 8, 8], ["x", "y", "z"])))
  var scene = union(sbox, union(union(wall, doors), union(floor, sill)));
  var view = translate([vw/2, vh/2, -100], rotx(0.2, roty(-0.6, scene)));

  // Animation state
  var pos = -Math.PI/2;
  var dpos = 0;
  var interval;

  // Main loop function
  function r() {
    // Update state
    pos += dpos * timestep;
    if (Math.abs(pos) >= Math.PI/2) {
      dpos = 0;
      pos = Math.PI/2 * pos / Math.abs(pos);
      if (pos < 0) { // no animation needed
        clearInterval(interval); interval = undefined;
      }
    }

    // Render scene
    var t = [];
    for (var y = vh - 1; y >= 0; y--) {
      for (var x = 0; x < vw; x++) {
        var z = 0, distance;
        while ((distance = view(x,y,z)) > 0.12) {
          z -= distance;
          if (!isFinite(z) || z < -1000) {
            mat = " ";
            break;
          }
        }
        t.push(mat);
      }
      t.push("\n");
    }
    document.getElementsByTagName("pre")[0].textContent = t.join("");
  }

  // Click handler
  function turn() {
    if (dpos !== 0) {
      dpos *= -1;
    } else {
      dpos = (pos < 0 ? 1 : -1) * 2.3;
    }
    if (!interval) {
      interval = setInterval(r, timestep*1000);
    }
  }

  // Render initial state
  r();
</script>

বন্ধ হয়ে গেলে, দরজাগুলি দেখতে এই রকম হয়:

(বন্ধ দরজা স্ক্রিনশট।)


1
স্বীকার করতে হবে, সেখানে কিছু সুন্দর কাজ আছে।
ইভেন্ট_হরিজন

1
ঐটা অসাধারণ.
মিঃজান্ডার

9

এইচটিএমএল এবং সিএসএস 3, 55 পয়েন্ট

আমার ধারণা, অভিনব, ইন্টারেক্টিভ, অ্যানিমেটেড দরজা 55 পয়েন্ট।

হ্যাঁ, এটি অন্য যে কোনও দরজার মতো খোলে, তবে যদি একটি স্লাইডিং দরজা অভিনব হিসাবে গণনা করা হয় তবে কেন একটি ঘোরানো দরজাটি না? ঘোরানো যদি অভিনব না হয় তবে ভাল, একটি সহচরী দরজা কোনও সমস্যা নয়:)

একটি ডেমো http://result.dabblet.com/gist/3132160/ac475112dbba493d2dd7d98493d4f4ceaa209a7c এ উপলব্ধ । খুলতে এবং বন্ধ করতে ডোরকনব ক্লিক করুন। কোনও জাভাস্ক্রিপ্ট জড়িত নয়; এটি কেবল CSS3 এর যাদু।

#wall {
    background-color: #eee;
    bottom: 0;
    left: 0;
    position: absolute;
    right: 0;
    top: 0;
    transform: rotateX(-10deg);
    transform-origin: 0 100%;
    transform-style: preserve-3d;
}

#door-container {
    background-color: black;
    height: 100%;
    margin: 0 auto;
    width: 300px;
}

#door {
    background-color: brown;
    height: 100%;
    margin: auto;
    position: relative;
    transform-origin: 0 0;
    transition: transform 0.5s ease;
    width: 300px;
}

#door .knob {
    background-color: gold;
    border-radius: 10px;
    height: 20px;
    margin-top: -10px;
    position: absolute;
    right: 10px;
    top: 50%;
    width: 20px;
}

#open:target + #wall #door {
    transform: rotateY(-145deg);
}

#open:target + #wall #open-link {
    display: none;
}

#close-link {
    display: none;
}

#open:target + #wall #close-link {
    display: inline;
}
<span id="open"></span>
<div id="wall">
    <div id="door-container">
        <div id="door">
            <a href="#open" id="open-link" class="knob"></a>
            <a href="#closed" id="close-link" class="knob"></a>
        </div>
    </div>
</div>

স্লাইডিং দ্বারা আমি মূলত "আস্তরণের কাঁচের দরজা" বলতে প্যাটিওর মতো, তবে আমি দেখতে পেতাম কীভাবে এটি অভিনব হিসাবে বিবেচিত হবে না (বিশেষত কোডিংয়ের ক্ষেত্রে এটি ঘোরার চেয়ে অনেক সহজ)। এছাড়াও, ঘোরানো দ্বার দ্বারা আমি ঘোরাফেরা বোঝাচ্ছি। সংশোধন করবে।
ইভেন্ট_হরিজন

6

গণিত 271 চর

Manipulate[a = {0, 0, 0}; b = {0, 0, h}; p = Polygon; c = Cuboid; t = Rotate;Graphics3D[{c@{{-w - 1, 0, 0}, {-w, 1, h}}, c@{{w + 1, 0, 0}, {w, 1, h}},t[p@{a, b, {-w, 0, h}, {-w, 0, 0}}, r, {0, 0, 1}, {- 2 w/3, -w/3, 0}], t[p@{a, b, {w, 0, h}, {w, 0, 0}}, -r, {0, 0, 1}, { 2 w/3, -w/3, 0}]}],{{r, 0}, 0, 3/2}, {{w, 2}, 1, 3}, {{h, 4}, 3, 5}]

দরজা

দ্বৈত দরজা

  • শূন্য থেকে 90 ডিগ্রি ঘূর্ণন দ্বারা খোলা (স্লাইডার ব্যবহার করে r)
  • তাদের উচ্চতা এবং প্রস্থ স্লাইডার ( hএবং w) দ্বারা সেট করা যেতে পারে ।
  • একটি 3 ডি আলোক পরিবেশে হয়
  • বিভিন্ন কোণ থেকে দেখার জন্য ইন্টারেক্টিভভাবে ঘোরানো যেতে পারে।

কোডটি স্যান্ডর কাবলের একটি প্রোগ্রামের ভিত্তিতে তৈরি ।


4

পাইথন - 65 পয়েন্ট, 86 টি অক্ষর

ইন্টারেক্টিভ এবং 100 টিরও কম অক্ষর।

ইনপুটটির জন্য অপেক্ষা করে এবং আপনাকে দরজাটি দেখায় । বৈধ ইনপুটটি "খোলা" এবং "বন্ধ" এবং "বাই"।

g,s=1,'open close'
while g:
 i=raw_input()
 print '_'+'/_ '[s.find(i)/5]+'_'
 g=i in s

আপনি সম্ভবত এটি কমান্ড টাইপ না করে ওপেন / ক্লোজ টগল করতে সেট করতে পারেন এবং প্রয়োজনীয়তাগুলি পূরণ করতে পারেন - এটি আপনাকে কয়েক অক্ষর সংরক্ষণ করবে।
জোয়েল করনেট

2
সম্ভবত, তবে তারপরেও, এটি কোড-গল্ফ নয়, তাই এটি সত্যিই কিছু যায় আসে না;)
ড্যানিয়েরো

1
দারুণ একঘেয়ে দেখার মতো দরজা, তবে দুর্দান্ত দেখতে
মাউসট্র্যাপ

4

গণিত 127 চর

এটি আমি আগে জমা দিয়েছি যে এটি একটি আরও সূচিকৃত বাস্তবায়ন। এটির একটি দরজা রয়েছে। একক দরজা

  • শূন্য থেকে 90 ডিগ্রি ঘূর্ণন দ্বারা খোলে (স্লাইডার ব্যবহার করে o)
  • একটি 3D আলোক পরিবেশে
  • বিভিন্ন কোণ থেকে দেখার জন্য ইন্টারেক্টিভভাবে ঘোরানো যেতে পারে।

তবে এটি একটি নির্দিষ্ট দরজার উচ্চতা এবং প্রস্থ ব্যবহার করে uses

Manipulate[a = {0, 0, 0}; Graphics3D[{Tube[{a, {1, 0, 0}, {1, 0, 2}, {0, 0, 2}, a}, .03],Rotate[Cuboid@{a, {1, -.1, 2}}, o, {0, 0, 1}, a]}], {o, 0, -Pi/2}]

door2


আপনার সম্ভবত নতুন জমা দেওয়ার পরিবর্তে আপনার পূর্ববর্তী জমাটি সম্পাদনা করা উচিত ছিল।
জো ব্যক্তি

@ ফায়ারডুড 67 এটি যদি কোনও কোড গল্ফ চ্যালেঞ্জ হত তবে আমি কেবল আমার আগের প্রবেশটি সংক্ষিপ্ত কোডের সাথে প্রতিস্থাপন করতাম have যাইহোক, এসও সংক্ষিপ্ত প্রোগ্রাম এবং আরও জটিল প্রোগ্রাম উভয় (আরও বৈশিষ্ট্যযুক্ত দরজা) এর প্রতি আগ্রহের ইঙ্গিত দেয়।
ডেভিডসি

ওহ দুঃখিত, আমি তখন বিভ্রান্ত হয়ে
জো ব্যক্তি

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