সিমুলেটেড বিস্ফোরণের জন্য সর্বাধিক কমপ্যাক্ট কোড


13

আপনি কি এমন একটি প্রোগ্রাম লিখতে পারেন যা বিস্ফোরিত হওয়া পিক্সেলের একটি গ্রুপের স্ক্রিনে রেন্ডার করে (সাধারণ কণা ইঞ্জিনের মতো) এবং আপনি কি খুব অল্প সংখ্যক অক্ষর (কী স্ট্রোক) এ এটি করতে পারেন? (গেমের লেমিংসগুলি স্মরণ করুন, যখন সেই ছোট্ট ছেলেরা বিস্ফোরিত হবে এবং তাদের ছোট পিক্সেল টুকরা পৃথকভাবে উড়ে যাবে))

কেউ এখানে একটি প্রসেসিং স্কেচ হিসাবে একটি সাধারণ কণা সিস্টেম প্রোগ্রাম করেছেন এবং অন্যেরা যদি চেষ্টা করে তবে তা সম্পাদন করতে সক্ষম হওয়া উচিত বলে আমি মনে করি তার তুলনায় এটি বেশ বিশাল। তবে যদি কেউ সি ++ এবং এসডিএল, এমনকি জাভা বা সি # তেও এটি করতে পারে তবে আমি আরও বেশি প্রভাবিত হব।


2
"লাইনের কোডগুলি" এমন একটি মেট্রিক যা প্রচুর অস্পষ্টতা খুলে দেয় এবং এটি অবশ্যই [কোড-গল্ফ] নয় যা "অক্ষরের সংখ্যা" বা কখনও কখনও "বাইটের সংখ্যা"। মেটা সম্পর্কিত সম্পর্কিত আলোচনা।
ডিএমকেকে --- প্রাক্তন মডারেটর বিড়ালছানা

4
বিটিডব্লিউ - আমি উপরে উত্থাপিত ইস্যুটি এবং বরং অসম্পূর্ণ স্পেসিফিকেশন হ'ল এমন বিষয় যা ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ছাঁটাতে ছাঁটাই করা ব্যর্থতা তদন্তকারী ল্যাব চ্যাট বা মেটাতে স্যান্ডবক্সে আগে থেকেই এটি আলোচনা করে কার্যকরভাবে আটকানো যেতে পারে । তবে, যে কোনও ক্ষেত্রে, কোডগলফ.এসইতে স্বাগতম।
ডিএমকেকে --- প্রাক্তন মডারেটর বিড়ালছানা

হালনাগাদ প্রশ্ন, অক্ষরের সংখ্যা সহ এলওসি প্রতিস্থাপন।
টড হপকিনসন

1
হ্যাঁ, আপনি সি / সি ++ / জাভা / যে কোনও সি ডেরাইভেটিভ লিখলে আপনি কোডের 1 লাইনে একটি সম্পূর্ণ ওএস লিখতে পারেন
নেট কোপেনহেভার

সম্পর্কিত: stackoverflow.com/questions/1947031/...
gnibbler

উত্তর:


13

পাইথন, 245 অক্ষর

import random,time
R=lambda:random.randrange(-999,999)/1e3
P=[(40+20j,R()+1j*R())for i in' '*20]
for i in' '*20:
 C=([' ']*80+['\n'])*40
 for p,v in P:C[int(p.real)+81*int(p.imag)]='*'
 print''.join(C);P=[(p+v,v*.95)for p,v in P];time.sleep(.1)

এটি কোনও লেমিং বিস্ফোরণ নয়, তবে বংশবৃদ্ধির জন্য অবশ্যই এটি +1!
টড হপকিনসন

10

সি #, ডব্লিউপিএফ - 1523

মারাত্মক গুরুতর নয়; এটি মূলত এটি চেষ্টা করেছিল কিনা তা চেষ্টা ছিল।

আমি এখানে যা করছি তা ডেটা বাইন্ডিং এবং টেম্প্লেটিংয়ের মাধ্যমে কণা প্রদর্শন করতে ডাব্লুপিএফ-তে একটি আইটেমসন্ট্রোল (মেনু, যেহেতু এটি কম) ব্যবহার করছে using একটি ডেটা টেম্পলেট কণাগুলি দেখতে কেমন তা নিয়ন্ত্রণ করে (এক্ষেত্রে একটি সাধারণ চেনাশোনা) এবং ডেটা বাইন্ডিং কণার রঙ এবং অবস্থান নিয়ন্ত্রণ করে।

প্রতিটি কণার একটি অবস্থান, একটি রঙ এবং একটি দিক থাকে যা টাইমার দ্বারা আপডেট হয়। প্রাথমিকভাবে এলোমেলো দিকনির্দেশ দিয়ে উইন্ডোটির মাঝখানে একগুচ্ছ কণা তৈরি করা হয়। এই সংগ্রহটি আইটেমসন্ট্রোলের সাথে ডেটা-আবদ্ধ হয়ে যায় যা বৈশিষ্ট্যগুলি আপডেট হয়ে গেলে স্বয়ংক্রিয়ভাবে কণাগুলি প্রদর্শন করতে পরিচালনা করে। মহাকর্ষের কারণে কণাগুলি কিছুটা টেনে নামানো হয়।

স্বীকৃতি স্বরূপ এটি একটি দীর্ঘ দীর্ঘ পেয়েছে। তবে কমপক্ষে এটি দেখতে সুন্দর দেখাচ্ছে:

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

বাদ দিয়ে অবশ্যই এটি আরও খাটো করা যেতে পারে:

  • মাধ্যাকর্ষণ, কণাগুলি চারদিকে সমানভাবে প্রসারিত করে;
  • প্রারম্ভিক ভেক্টরগুলির জন্য সাধারণ বিতরণ, কারণগুলি একটি বিচ্ছিন্ন »বাক্স in এ কণাগুলি প্রসারিত করে;
  • উজ্জ্বলতা প্রকরণ, কণা কালো রেখে।

আমি নান্দনিকতার স্বার্থে এটি না করার পছন্দ করেছিলাম। এই সমাধানটি নির্বিশেষে অন্য যে কোনও কিছুর চেয়ে দীর্ঘ। ডেটা বাঁধাই এবং টেম্প্লেটিং পদ্ধতিটি মার্জিত হতে পারে তবে এটি একটি বিটম্যাপটি কেবল আপডেট করার সাথে তুলনা করে বেশ ভার্জোজ। (দ্রষ্টব্য: উপরের সমস্ত কিছু রেখে আমি এটিকে 1356 এ নামিয়েছি , তবে এটি তখন ভয়ঙ্কর দেখাচ্ছে)

কোডটি তিনটি ফাইলে বিতরণ করা হয়েছে, যা এখানে সুশৃঙ্খলার জন্য ফর্ম্যাট আকারে দেওয়া হয়েছে:

App.xaml

<Application xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" StartupUri="W.xaml"/>

W.xaml

<Window x:Class="W" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <Menu Name="i">
        <Menu.ItemTemplate>
            <DataTemplate>
                <Ellipse Width="2" Height="2" Fill="#000" Opacity="{Binding O}">
                    <Ellipse.RenderTransform>
                        <TranslateTransform X="{Binding X}" Y="{Binding Y}"/>
                    </Ellipse.RenderTransform>
                </Ellipse>
            </DataTemplate>
        </Menu.ItemTemplate>
        <Menu.Template>
            <ControlTemplate>
                <ItemsPresenter/>
            </ControlTemplate>
        </Menu.Template>
        <Menu.ItemsPanel>
            <ItemsPanelTemplate>
                <Canvas/>
            </ItemsPanelTemplate>
        </Menu.ItemsPanel>
    </Menu>
</Window>

W.xaml.cs

using M = System.Math;
using T = System.Timers.Timer;
using System;
using System.ComponentModel;

partial class W
{
    int a;
    T t = new T(99);

    public W()
    {
        InitializeComponent();
        Height = Width = 500;
        var r = new Random();
        Func<double> n = () => 2 * (M.Sqrt(-2 * M.Log(r.NextDouble())) * M.Sin(6 * r.NextDouble()));
        var l = new System.Collections.Generic.List<P>();
        for (; a++ < 300; )
            l.Add(new P { X = 250, Y = 250, f = n(), g = n() });
        i.ItemsSource = l;
        t.Elapsed += delegate
        {
            foreach (P x in l)
            {
                x.X += x.f;
                x.Y += x.g += .2;
                x.O = M.Max(1 - M.Sqrt(M.Pow(250 - x.X, 2) + M.Pow(250 - x.Y, 2)) / 250, 0);
            }
        };
        t.Start();
    }
}

class P : System.Windows.ContentElement, INotifyPropertyChanged
{
    public double y, f, g;
    public double X { get; set; }
    public double O { get; set; }
    public double Y
    {
        get { return y; }
        set
        {
            y = value;
            if (PropertyChanged != null)
                PropertyChanged(this, new PropertyChangedEventArgs(""));
        }
    }
    public event PropertyChangedEventHandler PropertyChanged;
}

1
+1 দুর্দান্ত উদাহরণ! অনেকটা সেই ধ্রুপদী বিস্ফোরিত ক্ষুদ্র দিনগুলির মতো। এবং আমি মনে করি এটি প্রাথমিক প্রশ্নে প্রসেসিং কোডটিকে প্রহার করে।
টড হপকিনসন

@ আইসিএনভিড: আমাকে স্বীকার করতে হবে যে প্রসেসিং স্কেচ (আমি কেবল চূড়ান্ত ফলাফলের দিকে চেয়েছিলাম, কোড নয়) চেহারার জন্য আমার অনুপ্রেরণা ছিল।
জয়ে

গাহ! আমি এখন এই গল্ফ করা বন্ধ। এটির মধ্যে এখনই এটির কিছু সুন্দর কৌশল রয়েছে (যেমন সমস্ত সম্পত্তিগুলির জন্য সম্পত্তি পরিবর্তন এবং কেবল সর্বশেষ সেটটিতে সেট করা আছে)। আমি 2000 চরিত্রের উপরে শুরু করে দিয়েছি, আমি অনুমান করি যে 500-চর হ্রাস খুব খারাপ নয়। এটি এতক্ষণে বেশ ধীর হয়ে গেছে। ডিসপ্যাচারটাইমার টাইমারের চেয়ে অনেক বেশি ভাল কাজ করে তবে এটি দীর্ঘতর। যদিও আমি এটি সিলভারলাইটে পোর্ট করতে এবং আমার ফোনে চালানোর জন্য প্রলুব্ধ হতে পারি।
জোয়

আমি মনে করি বিস্ফোরণের কোড আকার এবং নান্দনিক মানের সংমিশ্রণের জন্য এটিই হিট।
টড হপকিনসন

আইসনিভাড: আমি পরে সরাসরি কিছুটা বিটম্যাপে আঁকার জন্য আবার লিখব; এটি তখন আরও খাটো হওয়া উচিত। 45% কোডটি এক্সএএমএল; কোডের একটি বড় অংশ কণা বৈশিষ্ট্যগুলিতে UI উপাদানগুলিকে আবদ্ধ করতে সক্ষম হয়। এতে সি # এর সাধারণ ভার্বোসিটি যুক্ত করুন এবং এটি যতটা প্রয়োজন তার চেয়ে বেশি ভার্বোস।
জো

7

পোস্টস্ক্রিপ্ট - 287 244 অক্ষর

currentpagedevice/q{exch def}def/PageSize get/z{dup 3 1 roll add exch 4 2 roll}def{2
div}forall/y/r{rand 2 27 exp div 8 sub}def q/x q[99{[x r y r]}repeat]50{dup{aload/t q
3 index 2 index 4 4 rectfill 1 sub z z t astore pop}forall showpage}repeat

সাথে চালানো gs -dNOPAUSE asplode.ps

এমনকি আপনি এটি মুদ্রণ এবং একটি ফ্লিপবুক করতে পারে


চমৎকার! ইহা সুন্দর!
ব্যবহারকারীর অজানা

5

জাভাস্ক্রিপ্ট - 268 অক্ষর

এখানে একটি 1 মাত্রিক, 2 কণা, বিস্ফোরণ:

javascript:d=document;c=d.createElement('canvas');d.body.appendChild(c);g=c.getContext("2d");function e(x,y,m){g.arc(x,y,m,0,2*Math.PI,false);g.fill()}function s(a,b,v,t){c.width=c.width;e(50+t*v,50,b);e(50+t*b*v/(b-a),50,a-b);setTimeout(function(){s(a,b,v,t+1)},100)};s(9,5,1,0)

এটি চালাতে, একটি ভাল ওয়েব ব্রাউজারে একটি সম্পর্কে: ফাঁকা পৃষ্ঠা খুলুন, ইউআরএল বারে পেস্ট করুন এবং এন্টার টিপুন। আপনি শেষে মানগুলি সম্পাদনা করে বিস্ফোরণটি পরিবর্তন করতে পারেন s(10,5,1,0)। প্রথম মানটি বিস্ফোরিত হওয়া কণার আকার। দ্বিতীয় মানটি এটি থেকে বিস্ফোরিত কণার আকার। তৃতীয় মান হ'ল এটির মধ্য থেকে কণার বিস্ফোরণ ঘটে। '0' যেমন আছে তেমন ছেড়ে দিন।


1
এটি সাফারি 5.0.5 তে কাজ করে না (এমন কিছু দেখায় যা কিছুটা বেসবল ব্যাটের মতো দেখায়) বা ক্রোমে 11.0.696.68 (দুটি বল দেখায়, একটি অন্যটির থেকে কিছুটা বড়, আস্তে আস্তে সরানো)।
মেরিনাস

1
@ মারিনাস ক্রোমে যা হচ্ছে তা হ'ল যা হওয়ার কথা।
ডেভিড

এটি এফএফ 4, আইই 8 এ কাজ করতে পারে না। :(
st0le

ভাল আমি এটি ফায়ারফক্স 4.0.0 এবং ক্রোমিয়াম 11.0.696.65 এ পরীক্ষা করেছি .6 আপনি পুরো স্ক্রিপ্টটি অনুলিপি করেছেন বলে মামলা করুন - অনুলিপি করার সময় শেষ বন্ধনীটি মিস করা আমার পক্ষে সহজ।
ডেভিড

@ st0le IE8 সমর্থন করে না ক্যানভাস ট্যাগ, যদি না আপনি কিছু মলিন ঠাট সঞ্চালন: stackoverflow.com/questions/1332501/...
ক্রিস্টিয়ান Lupascu

4

এপিএল ( 120 118)

পাইথন এন্ট্রি হিসাবে এটির একই ধরণের আউটপুট রয়েছে (যেমন এটি কেবল অক্ষর গ্রিডে রাজ্যগুলিকে আউটপুট করে)। কেবল গ্রিডটি 30x15 এবং কণার উত্স 15x7 এ।

⍎⊃,⌿(9⍴⊂'(⎕DL.1)⊢{{(A+2↑⍵),0.95×A←2↓⍵}¨⍵⊣⎕←'' ⍟''[1+(⍳15 30)∊2↑¨⌊⍵]}'),⊂',⌿⍉10 4⍴⍎''⍬'',420⍴'',(7 15,.01×99-?2⍴199)'''

2

জাভাস্ক্রিপ্ট 502 500 496

এটি জোয়ের এবং ডেভিড 4 দেবের জবাবগুলির সংমিশ্রণ (এটি জায়েসের স্ক্রিপ্ট / ক্যানভাস ব্যবহার করে প্রয়োগ করা জোয়ের অ্যালগরিদমের একটি নির্লজ্জ অনুলিপি):

W=500;H=250;function r(){return 2*m.sqrt(-2*m.log(m.random()))*m.sin(6*m.random())}function n(){z=[];for(i=W;i;i--){s={};s.x=s.y=H;s.f=r();s.g=r();z.push(s)}}function w(){x.clearRect(0,0,W,W);z.forEach(function(a){a.x+=a.f;a.y+=a.g+=.2;x.fillStyle="rgba(0,0,0,"+m.max(1-m.sqrt(m.pow(H-a.x,2)+m.pow(H-a.y,2))/H,0)+")";x.fillRect(a.x,a.y,2,2)})}z=[];m=Math;d=document;c=d.createElement("canvas");c.width=c.height=W;d.body.appendChild(c);x=c.getContext("2d");n();setInterval(n,2e3);setInterval(w,10)

জেএসফিডাল পূর্বরূপ: http://jsfiddle.net/GVqFr/60/ (আপনি কোডটি সুন্দরভাবে ফর্ম্যাট করতে টিডিআপ বাটন টিপতে পারেন)


@ কিউকিউই সম্পাদনার জন্য ধন্যবাদ!
ক্রিশ্চিয়ান লুপাস্কু

আমি জাভাস্ক্রিপ্ট বিশেষজ্ঞ নই, তবে আপনি ধ্রুবকটি 500প্রচুর ব্যবহার করেন । আপনি একটি বিশ্বব্যাপী পরিবর্তনশীল সংজ্ঞায়িত করতে পারেন a=500, আপনি সমস্ত প্রতিস্থাপন কয়েকটি অক্ষর সংরক্ষণ করতে পারবেন 500সঙ্গে a
মিঃ লালমা 21

@ গিগাওয়াট আপনি ঠিক বলেছেন; যে 250পাশাপাশি কাজ করে ।
ক্রিশ্চিয়ান লুপাস্কু

1

380 বাশ

C="4443311177"
t=".-xxXMXxx-."
alias c='echo -e "\e[2J"'
g(){
echo -e "\e[1;$4\e[$2;$1H$3"
}
f(){
x=$1
y=$2
p=$((2-RANDOM%5))
q=$((2-RANDOM%5))
for i in {-5..5}
do
x=$((x+p))
y=$((y+q))
n=$((5+i))
c=$((5+i))
g $x $y ${t:n:1} 3${C:c:1}m 
w=$(printf "%04i\n" $((5*i*i)))
sleep ${w/0/0.}
g $x $y " " 3${C:c:1}m
done
}
e(){
c
for i in {1..10}
do
f $((COLUMNS/2)) $((LINES/2)) &
done
}

কল করুন এবং বিস্ফোরণ মত।

আপডেট: বর্ণযুক্ত

t = পাঠ্য, সি = ক্লস, জি = গোটক্সি, এফ = ফ্লাই, সি = কালার


1

এসডিএল সহ সি, 423 টি অক্ষর

যেহেতু মূল সমস্যার বিবরণ স্পষ্টভাবে এসডিএল উল্লেখ করেছে, আমি অনুভব করেছি যে এটি এসডিএল সমাধান জমা দেওয়ার অতীত সময় ছিল। দুর্ভাগ্যক্রমে, এসডিএল ফাংশন এবং স্ট্রাক্টের নামগুলি বিশেষত ক্ষয় হয় না, তাই এই প্রোগ্রামটি কিছুটা দীর্ঘ। আসলে, আমি এটিকেও ছাড়তে পারি না #include

#include<math.h>
#include"SDL.h"
SDL_Surface*s;SDL_Event e;SDL_Rect p;int i,n;double q[256];main(){
SDL_Init(SDL_INIT_VIDEO);s=SDL_SetVideoMode(320,320,32,0);
for(srand(time(0));e.type-SDL_QUIT;n=-~n%64){
for(i=256*!n;i;q[--i]=rand()%65536*9.5874e-5);
for(SDL_FillRect(s,0,i=0);++i<256;SDL_FillRect(s,&p,-n*67372036))
p.x=160+cos(q[i])*q[i-1]*n,p.y=160+sin(q[i])*q[i-1]*n,p.w=p.h=1;
SDL_Flip(s);SDL_Delay(50);SDL_PollEvent(&e);}}

(কোডটি ইতিমধ্যে এত বিশাল যেহেতু আমি কিছু অতিরিক্ত বিট রেখেছি যাতে এটি সতর্কতা ছাড়াই সংকলন করতে পারে I

অ্যানিমেশনটি অসীম লুপে চলে। প্রোগ্রামটি থেকে বেরিয়ে আসার জন্য উইন্ডোটি বন্ধ করুন। প্রতিটি বিস্ফোরণ এলোমেলো কণার একটি নতুন সেট ব্যবহার করে।

আমি কোডটিতে নম্বরটিও উল্লেখ করতে চাই 67372036। এটি দ্বিতীয় কলটিতে সর্বশেষ যুক্তিটির জন্য অভিব্যক্তিটিতে উপস্থিত হয় SDL_FillRect()। কোডটি দাঁড়ানোর সাথে সাথে বিস্ফোরণটি পুরোপুরি গ্রেতে রেন্ডার করা হয়। এই সংখ্যাটি সামান্য পরিবর্তন করলে বিস্ফোরণে খুব সূক্ষ্ম তবে মনোরম রঙের প্রভাব যুক্ত হবে। 67372032বিস্ফোরণের শুরুতে কণাগুলিকে সংখ্যাটি রঙ করে, যখন সংখ্যাটি 67372034শেষের দিকে ম্লান হওয়ার সাথে সাথে একটি রঙের প্রভাব সরবরাহ করে। অন্যান্য সংখ্যা কম সূক্ষ্ম রঙ-সাইক্লিং প্রভাব তৈরি করতে পারে। আমি তাদের চেষ্টা করে দেখতে উত্সাহিত করি।


1

এখানে আরও কয়েকটি দুর্দান্ত উদাহরণ দেখার পরে, আমি এটিকে একবারে যাওয়ার সিদ্ধান্ত নিয়েছি, এবং একটি কণা ফাংশন তৈরি করব যা 140byt.es এ ফিট করে

জাভাস্ক্রিপ্ট, ২৮২ টি অক্ষর

( ১৩৮ টি চর কণা ফাংশন এবং ১৫০ টি চর বেসিক ক্যানভাস অঙ্কন বয়লারপ্লেট)

p=function(a,t,x,y,n,g,s,i,d){with(Math)for(i=n;i--;d=cos(i*sin(i*s)),a.globalAlpha=n/t/i,a.fillRect(x+t*sin(i)*d, y+t*cos(i)*d+t*g,2,2));};d=document;a=d.body.appendChild(d.createElement('canvas')).getContext('2d');t=setInterval("a.clearRect(0,0,300,150);p(a,t++, 50,50,1e3,.2,1)")

লাইভ জেএসফিডাল এখানে উদাহরণ

কোডটিকে পুরোপুরি পদ্ধতিগত করে তোলার জন্য আর আর অ্যারে বা অবজেক্ট-এসাইনমেন্ট কোডের দরকার নেই, আকারটি অনেক হ্রাস করে। পদ্ধতিগত প্রভাব তৈরি করার সাথে আরও কিছু চমৎকার পার্শ্ব প্রতিক্রিয়া রয়েছে।

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

বৈশিষ্ট্য

  • কনফিগারযোগ্য এক্স, বিস্ফোরণের কেন্দ্রস্থল।
  • কণার কনফিগারযোগ্য সংখ্যা
  • উল্লম্ব দিকের মাধ্যাকর্ষণ: আপনার কণাগুলি নীচে পড়ুন বা উপরে উঠুন!
  • বীজযোগ্য, প্রতিটি বীজের নিজস্ব বিস্ফোরণ রয়েছে এবং কম্পিউটারে প্রতিটি সময় ঠিক সেই বিস্ফোরণটি প্রদর্শিত হবে।
  • প্রভাব তৈরি হওয়ার প্রক্রিয়াগত পদ্ধতিতে স্লোমোশন, ফাস্ট ফরোয়ার্ড এবং বিস্ফোরণগুলি পিছন দিকে চালানো সব সম্ভব।
  • আকার: 138 বাইট

এটিকে এনটেটেড সংস্করণ হিসাবে গিটহাব-এ দেখুন


0

পাইগাম সহ পাইথন, 240 টি অক্ষর

আমি বুঝতে পারি যে অজগরটিতে ইতিমধ্যে একটি সমাধান রয়েছে, তবে যেহেতু এটি কেবল অক্ষরগুলি মুদ্রণ করে, আমি ভেবেছিলাম যে এটি একটি দুর্দান্ত অ্যানিমেশন আঁকলে এটি তৈরি করা সার্থক হবে।

অসম্পূর্ণ, আমি যা দিয়ে শুরু করেছি:

import math
import random
import pygame
pygame.init()

screen = pygame.display.set_mode((800, 800))
particles = [(random.gauss(0,.5), random.uniform(0,6.28318)) for i in range(2000)]

for i in range(399):
    screen.fill((255,255,255))
    for speed, angle in particles:
        distance = i * speed
        x = 400 + distance * math.cos(angle)
        y = 400 + distance * math.sin(angle)
        screen.set_at((int(x), int(y)), (0,0,0))
    pygame.display.flip()

অনেক হ্যাকারি পরে। কিছু অক্ষর সংরক্ষণ করার জন্য ফুলস্ক্রিন। শব্দ বা হরফ ব্যবহার না করে, তাই আমি মনে করি init()অপ্রয়োজনীয় (এটি আমার পক্ষে কাজ করে)।

import math as m,random,pygame
d,x,g=pygame.display,range(999),random.gauss
s,e=d.set_mode(),[(g(0,.2),g(0,9))for i in x]
for i in x:
 d.flip(),s.fill([255]*3)
 for v,a in e:
        y=400+i*v*m.cos(a),400+i*v*m.sin(a)
        s.set_at(map(int,y),[0]*3)

0

পাইথন - 327 অক্ষর

আকর্ষণীয় জিনিস:

  • জটিল সংখ্যাটি 2 ডি ভেক্টর হিসাবে ব্যবহার করুন
  • (v * cos(a), v * sin(a)) হিসাবে বাস্তবায়িত v*e**(1j*a)
  • 3 ডি বিস্ফোরণের মতো দেখাচ্ছে।
  • মাধ্যাকর্ষণ।

import pygame as P,random as R,math
R=R.random
D=P.display
D.init()
W=800
S=D.set_mode((W,W))
T=P.time.Clock()
C=lambda v:map(int,(v.real,v.imag))
X=[(8+R())*math.cos(R()*1.57)*2.7**(1j*R()*6.28) for i in range(999)]
for t in range(250):
 D.flip();T.tick(30);S.fill(2**24-1)
 for v in X:S.set_at(C(v*t+.005j*t*t+W/2*(1+1j)),0)

0

ডুইটার 112

c.width^=0
t?o.push({X:1e3,Y:500,U:S(99*t),V:C(9*t)}):o=[]
o.map(a=>{a.X+=a.U,a.Y+=a.V,x.fillRect(a.X,a.Y,9,9)})

কোডটি dwitter.net এ অনুলিপি / আটকানোর মাধ্যমে চেষ্টা করে দেখুন


ভাষা যখন চ্যালেঞ্জের পরে-তারিখ নির্ধারণ করে তখন আপনার এটিকে প্রতিযোগী হিসাবে চিহ্নিত করার কথা।
fəˈnɛtɪk
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.