অসীম ডিস্ক I / O এর জন্য সংক্ষিপ্ততম কোড


49

(গুগল ক্রোমে কেবল 50 টি ট্যাব খুলুন: ডি (মজা করছেন, আপনি পারবেন না))

অসীম ডিস্কের I / O যে কোনও ভাষার জন্য সংক্ষিপ্ততম কোড, সি # উদাহরণ:

using System.IO;

namespace FileApp {
    static class Program {
        public static void Main() {
            do {
                File.WriteAllText("a", "a");
                File.Delete("a");
            } while (true);
        }
    }
}

আপনি কেবল পুরো ডিস্কটি পূরণ করতে পারবেন না, তবে এটি শেষের দিকে থামবে এবং সীমাবদ্ধ থাকবে।

এবং আপনি কেবল পঠন করতে পারবেন না, অসীম লিখন ঘটতে হবে। (পর্যাপ্ত রানটাইমের পরে এটি আমার এসএসডিকে মেরে ফেলতে হবে))

ক্রেকিং পেতে! :)


6
ফাইলগুলি লেখার পরিবর্তে পড়া কি ডিস্ক আই / ও হিসাবে গণনা করা হয়? কি লিখতে হবে /dev/null? ( yes>/dev/nullবৈধ বাশের উত্তর কি?)
ডোরকনব

2
এটি কি কোনও ইনপুট নিতে পারে?
ব্যবহারকারী112638726

29
ডাং ম্যান ... তোমার এসএসডি তোমাকে কি করেছে?
আর কাপ,

2
যেহেতু আমি 6 বাইট সমাধানের সাথে প্রতিযোগিতা করার আশা করতে পারি না, তাই ফাইলটি তৈরি করা হবে? আমি যতদূর জানি শুধু একটি ফাইল কারণ নির্বাহ কিছু ফাইল সিস্টেম কারণ অন্ততপক্ষে 'শেষ এক্সেস সময়' অনেক সিস্টেমে সঞ্চালিত, লেখা একটি উপজাত হিসাবে ;-) আপডেট
Stilez

3
এই উত্তরগুলির মধ্যে অনেকগুলি একই জায়গায় এবং বারে বারে ডেটা লিখবে। তথ্যের সাথে পৃথক হওয়া সত্ত্বেও এটি একটি আসল ডিস্ক লেখার ফল দেয় না। (চরম মামলা, ডস -।> Windows যোগাযোগ আমি ডেটার 4K ডস লিখেছে এবং এটি Windows এ ফিরে পড়া -। তাই যতদিন ডেটা ডিস্ক আলো প্রবাহিত ছিল বন্ধ থাকার হবে)
লরেন Pechtel

উত্তর:


26

ডস / ব্যাচ: 4 বাইট

%0>x

এই ব্যাচ ফাইলটি নিজেকে কল করবে ( %0) এবং ( >) নামক কোনও ফাইলে আউটপুট পুনঃনির্দেশ করবে x। যেহেতু ইকো ডিফল্টরূপে চালু থাকে, এটি পাথ এবং কমান্ডকে আউটপুট দেয়।


এটি কি শেষ পর্যন্ত ডিস্ক স্পেসের বাইরে চলে যাবে, বা আউটপুট ওভাররাইট করা হবে?
ম্যাথুস সুম মিট

1
@ ম্যাথুসামমুট: >এটির সাথে ওভাররাইট করা হবে। >>সংযুক্ত হবে
টমাস ওয়েলার

1
আপনি
জিতেন

2
@ ΈρικΚωνσταντόπουλος: এটি সত্য। সেক্ষেত্রে 0 বাইট সহ একটি ফাইল তৈরি করা হয়, এই চ্যালেঞ্জের দ্বারা প্রত্যাশিত I / O উত্পন্ন নয়। তবে প্রতিটি ক্ষেত্রে বিবেচনা করা আমাদের কাজ নয়, অন্যথায় আপনি ক্যাচিং, ভাইরাস স্ক্যানার বন্ধ করতে চাইতে পারেন ...
থমাস ওয়েলারের

1
0 বাইট ফাইলটি লেখার পরেও ডিস্ক আই / ও হতে পারে, কারণ এটি ডিরেক্টরিতে সর্বশেষ সংশোধিত সময় আপডেট করতে হয়।

48

পাওয়ারশেল ভি 2 +, 10 বাইট

for(){1>1}

খালি forলুপ দিয়ে কেবল অসীমভাবে লুপ করে। প্রতিটি পুনরাবৃত্তি, আমরা পুনঃনির্দেশ অপারেটরের1 সাথে পূর্ণসংখ্যা (স্পষ্টভাবে একটি স্ট্রিংতে রূপান্তরিত) আউটপুট করি , যা স্থানীয় ডিরেক্টরিতে নামের ফাইলটিকে ওভাররাইট করে ।> 1


আপনি দ্বিতীয় 1 টি অন্য কোনও কিছুর সাথে প্রতিস্থাপন করতে পারেন (এটি একটি বৈধ ফাইলের নাম দেয়) বা এটি 1 হতে হবে?
নিক হার্টলি

1
আমার উইন্ডোজ ভিএম-এ, Winload.exeযথেষ্ট ...
Comintern

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

1
@ কিপ্যায়েট্যাক্সেস ম্যাথুসাম এর সঠিক রয়েছে। 1অন্তর্নির্মিত বিশ্লেষণকে সঠিকভাবে কাজ করার জন্য দ্বিতীয়টি কয়েকটি ধরণের হওয়া দরকার। যে কোনও [0-9]কিছুই একই কাজ করবে।
অ্যাডমবর্কবার্ক 12

1
@ নাচ সম্ভবত তখন এটি আমার নির্দিষ্ট পরিবেশের এক স্ফূর্তি হতে পারে। আমার ISE (PSv4 Win8.1), দ্বিতীয় প্রতিস্থাপন 1কিছু অ সাংখ্যিক (এবং নিদিষ্ট পারেন হিসাবে .\aবা a.txtবা মত) ফলাফল একটি বিশ্লেষণ ত্রুটি হবে।
অ্যাডমবার্কবার্ক

28

পাইথ, 6 বাইট

#.w]]0

পাইথের একমাত্র ফাইল আউটপুট কমান্ড .w। যখন কোনও স্ট্রিংয়ে ডাকা হয়, এটি সেই স্ট্রিংটি অ্যাপেন্ড মোডে থাকা কোনও ফাইলে লিখে দেয়, যা এই প্রশ্নের উদ্দেশ্যটির পক্ষে ভাল নয়। যখন 2-ডি অ্যারেতে কল করা হয়, তখন ফাইলের বিষয়বস্তু ওভাররাইট করে সেই ফাইলটিতে এটি সম্পর্কিত চিত্রটি লেখা হয়। এই প্রোগ্রামটি কি তাই করে। ডিফল্ট ফাইল আউটপুট নাম o.png, সুতরাং এই প্রোগ্রামটি অনন্তকালীন o.png1 পিক্সেলের সাদা চিত্রের সাথে ফাইলটি ওভাররাইট করে । #একটি অসীম লুপ।


27

যদি আপনি একটি সংক্ষিপ্ত (তবে আমার অন্যান্যটির চেয়ে বেশি বিরক্তিকর) উত্তর চান:

বাশ, 5 বাইট

>w;$0

আমি যদি সংক্ষিপ্ত করে তুলতে পারি তবে কমান্ড (3 বাইটের চেয়ে কম দীর্ঘ) যা I / O ডিস্কে কিছু লিখতে পারে। এমন কিছু syncকাজ করবে তবে syncএটি 4 বাইট 😛

দ্রষ্টব্য: সরাসরি বাশ থেকে রান করার সময় এটি কাজ করে না, কেবল তখন কোনও স্ক্রিপ্টে রাখা হয় এবং স্ক্রিপ্টের নাম হিসাবে চালানো হয়। (অর্থাত্ echo 'w>w;$0' > bomb; chmod 755 bomb; ./bomb)


1
দেখে মনে হচ্ছে এটি আমার এবং @ আইস্যাকের মধ্যে টাই - কে জিতবে?
ড্যানিয়েল

8
আমি exec(বা . $0) ব্যবহার পছন্দ করি । আমি মনে করি এটি পিআইডি শেষ হয়ে যাবে।
মুড়ু

1
wএখানে কি প্রথম প্রয়োজন? আমার জন্য কেবল >wএকটি খালি ফাইল তৈরি করে wএবং লুপে এটি করলে অসীম I / O তৈরি হবে কারণ মাইমটাইম মেটাডেটা নিয়মিত আপডেট করা দরকার।
হেনিং মাখোলম

1
যে @HenningMakholm যোগ্যতা অর্জন করেন, তাহলে আমি এর মধ্যে রেখে দেব।
ড্যানিয়েল

2
স্ক্রিপ্টটিতে কেবল এই বাইট রয়েছে। যেহেতু এটি ব্যাশ নেই সেখানে কোনও সংকলক বা অভিনব কোনও প্রয়োজন নেই।
ড্যানিয়েল

16

রুবি, 22 20 বাইট

loop{open(?a,?w)<<1}

বারবার 1ফাইল কেটে কাটা এবং লিখুন a

ভেন্টোরোকে 2 বাইটের জন্য ধন্যবাদ !


3
open(?a,?w)<<12 বাইট সংরক্ষণ
ভেন্টোরো

আপনাকে উপস্থিতি দিয়ে সম্মান জানানোর জন্য ডোরকনব, আপনাকে ধন্যবাদ। আমি বিনীত হই
ম্যাথুসাম মুট

ফাইল ফাঁসকারী ফাইল ফাঁস করে না? বা সুযোগের বাইরে গেলে এটি বন্ধ হয়ে যায়? (আইডি কে রুবি, দুঃখিত)
পিটার কর্ডেস

13

সেমিডি, 14 বাইট

:a
cd>1
goto a

অনিচ্ছাকৃতভাবে ফাইলটিকে 1বর্তমান ডিরেক্টরিতে স্ট্রিং দিয়ে ওভাররাইট করে


আমি এখানে নতুন: উইন্ডোজCR LF দুটি লাইন ( ) দুটি বাইট হিসাবে গণনা করা হয়?


13
পিপিসিজিতে আপনাকে স্বাগতম! উইন্ডোজ, কমপক্ষে আধুনিক সিস্টেমগুলি কেবল LFইস্যু ছাড়াই পরিচালনা করতে সক্ষম হবে । উপরেরটিগুলি কেবল LFউইন্ডোজ 8.1 এ আমার জন্য কাজ করে, তাই আপনার 14 বাইট সঠিক।
অ্যাডমবর্কবার্ক


13

বাশ + কোর্টিলস, 10

yes \>b|sh

একটি অবিচ্ছিন্ন স্ট্রিম লিখেছেন >b, যা shমূল্যায়নের জন্য পাইপ করা হয়েছে। প্রতিটি সময় শূন্য বাইট >bনামে ডাকা একটি ফাইলকে কেবল ছাঁটাই করে b


4
+1 কারণ আপনার কোডটি এই স্নিপেট কোডটি যা করবে তার পক্ষে সত্যিই উপযুক্ত
অলিভিয়ার ডুলাক

কেন bএবং না c?
ক্যালকুলেটরফলাইন

9

পার্ল 5, 27 32 22 বাইট

{{open my$h,'>o'}redo}

যদি কেবল কোনও ফাইলের সংশোধন টাইমস্ট্যাম্প পরিবর্তন হয় তবে ...

দ্রুত ব্যাখ্যা:

{ # Braces implicitly create/mark a loop.
    { # They also create closures, for `my` variables.
        open my $filehandle, '>', 'o';    # Writing to file "o".
        # close $filehandle;   # Called implicitly when
                               # variable gets destroyed.
    } # $filehandle gets destroyed because there are no references to it.
    redo; # ...the loop.
}

পূর্ববর্তী সমাধান (32 বাইট): {{open my$h,'>o';print$h 1}redo}

সম্পাদনা: {open F,'O';print F 1;redo} post পোস্ট করার আগে কোডটি পরীক্ষা করে নি; এখন আমি এটি সংশোধন করতে হবে।


1
: ওএ পার্ল ভেরিয়েবলের সাথে প্রিফিক্সড নেই $!
বিড়াল

@ কেট: এটি কোনও স্কেলার, অ্যারে বা হ্যাশের মতো নিয়মিত পরিবর্তনশীল নয়। এটি কেবল একটি খালি শব্দ। প্রসঙ্গের উপর নির্ভর করে, একটি খালি শব্দটিকে উপ (একটি ফাংশন), গ্লোব, বা ফাইলহ্যান্ডেল হিসাবে নেওয়া যেতে পারে। (সম্ভবত অন্যরাও?)
g4v3

8

পিএইচপি, 60 30 17 16 15 বাইট

@ মান্যাট ওয়ার্কের পরামর্শ অনুসারে আবারও আপডেট হয়েছে:

while(!`cd>1`);

এছাড়াও এখন পরীক্ষিত।


22 বাইট প্রতারণার একটি বিট:

যখন (এক্সিকিউট ('> 1 দির'));

@Manatwork 30 বাইট দ্বারা পূর্ব পরামর্শ:

যখন (file_put_contents (1,1));

পরীক্ষিত নয় (এই কম্পিউটারে কোনও পিএইচপি উপলভ্য নয়) 43 বাইট:

জন্য (; fputs ($ একটি, 1); $ একটি = হয় fopen (1, 'W') fclose সাথে ($ ক))

একটি গল্ফযুক্ত আসল 45 বাইট:

$ A = হয় fopen (1, 'W'); যখন (fputs ($ একটি, 1)) আবার গুটিয়ে নেওয়া ($ ক);

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


কেবল ফাইল_পুট_কন্টেন্টস () এর চেয়ে ছোট হতে পারে না।


5
while(file_put_contents(1,1));যথেষ্ট হতে হবে। নোট করুন যে কমান্ড লাইন থেকে সম্পূর্ণ স্ক্রিপ্টগুলি চলমান মেটাতে কোড ট্যাগের পরিবর্তে পিএইচপি চালানোরphp -r '…' বিষয়ে সম্মতি অনুসারে গ্রহণযোগ্য । -r
manatwork

এটি কি আসলে ডিস্কে লেখা বা স্মৃতিতে কেবল একটি বাফার?
ব্রাইস এম। ডেম্পসি

1
ওমান মানুষ! আমি জানতাম উন্নতির জন্য সর্বদা অবকাশ আছে, তবে খুব ... খুব খারাপ যে ফাংশনটি ছোট নাম পায় নি। : ডিআই বাফার সম্পর্কে জানেন না .. আমি ভাবছি যে আমার যদি এই সংক্ষিপ্ত সমাধানটি দিয়ে উত্তরটি আপডেট করা উচিত।
দিয়নেওয়ালা

2
এটি যদি খাটো হয় তবে দয়া করে আপনার উত্তরটি আপডেট করুন, এগিয়ে যান! :)
ম্যাথুসাম মুট

এটি কি পিএইচপি থেকে এক্সিকিউটিভ () কল করার অনুমতি দেয়? আমি বুঝতে পারলাম এটি পিএইচপি-র "স্কোপ" এ আর নেই।
দিয়াণেওয়ালা

7

sh, 11 বাইট

w>w;exec $0

এটিকে কোনও বিশেষ অক্ষর, যেমন লুপ.শ, ছাড়াই কোনও ফাইলে সংরক্ষণ করুন এটি কার্যকর করার যোগ্য করে তুলুন এবং এর সাথে ./loop.shবা এর মতো চালান ।

এটি কমান্ডের আউটপুটটি wফাইলটিতে লিখে wপ্রতিটি বারের আগের মানটিকে ওভাররাইট করে। তারপরে, এটি একই প্রোগ্রামের একটি নতুন সংস্করণ দিয়ে নিজেকে প্রতিস্থাপন করে, তাই এটি অসীমভাবে চলতে পারে।


এটি একটি দ্বিতীয় অনুপস্থিত >। এছাড়াও, ধরে $PATHw>>w;$0
নিচ্ছেন

@ এমনেজেল >>সংযোজন, এটি শেষ পর্যন্ত ডিস্কটি পূরণ করবে
বিড়াল

1
@ এমনেজেল কিন্তু আপনি এক্সিকিউটিভের প্রয়োজন হবে না ঠিক তা আমি বুঝতে পারি নি didn't অন্য কেউ এটি করেছে, তাই আমি আপডেট করব না, যদিও
ইসএএاکজি

3
বা . $0পরিবর্তে exec $0, সম্ভবত? আমি জানি না যে এটি স্ট্যাকের ওভারফ্লো বা কোনও কিছুর কারণ হয়ে দাঁড়াবে কিনা। হ্যাঁ, এটি বিস্মৃত।
মুড়ু

7

সি, 95 94 93 89 78 90 89 76 75 বাইট

#include<stdio.h>
main(){for(FILE*f=fopen("a","w");;fputc(0,f),fclose(f));}   

আবার, sudo watch -n1 lsof -p `pidof inf` এটি বৈধ বলে মনে হচ্ছে।

আমি যে স্পেস ডিটি দেখতে পাচ্ছি না: <

13 জ্যাকেট শেভ করার জন্য @ জেনসকে ধন্যবাদ : ডি


1
w+মোড পড়তে ও লিখতে প্রথমে ফাইল ছিন্ন করা হয়। যেহেতু আপনার পড়ার দরকার নেই, আপনি জাস্ট দিয়ে একটি বাইট শেভ করতে পারেন wযা ফাইলটিও ছাঁটাই করে, তবে ফাইলটি রিড মোডে খুলবে না।
মেগো

1
return 0;লুপটি কখনই বন্ধ না হয় তার প্রয়োজন নেই ।
জেনস

1
fputc(1,f)সুপার-ভার্বোজের পরিবর্তে কেন ব্যবহার করবেন না fprintf(f," ")?
জেনস

1
main(){for(FILE*f=fopen("a","w");;fputc(1,f),fclose(f));}খালি শর্তসাপেক্ষ যেহেতু forমাধ্যম true। 76 বাইট।
জেনস

1
@ পিটারকর্ডস পিপিসিজি স্ট্যাক ওভারফ্লো নয়; দয়া করে অন্যের উত্তরে সম্পাদনা করবেন না যা কোড বা উত্তরের অন্যান্য প্রধান অংশগুলি পরিবর্তন করে। টাইপ ফিক্সগুলি ঠিক আছে, তবে মন্তব্যে এমন কিছু বিয়োড যা (সত্যত ভুল বক্তব্যের সংশোধন সহ) পরামর্শ দেওয়া উচিত।
বিড়াল

6

বাশ, 26 বাইট

yes>y&while :;do rm y;done

যদি আমি এই ওয়ান-লাইনারটি প্রসারিত করি তবে আমি এটি পেতে পারি:

yes > y &      # Write out infinitely to the file y in the current directory
while true     # Let's do something forever
do             # Here's what we're going to do
    rm y       # delete y
done           # That's all we're going to do

এটি 10 ​​বাইট পাওয়ারশেল লাইনের সাথে হুবহু প্রতিদ্বন্দ্বিতা করতে পারে না তবে এটি অন্যদের বিরুদ্ধে এটির নিজস্ব ধারণ করবে। 6 বাইট সংস্করণের জন্য আমার অন্যান্য উত্তর দেখুন।



1
ভাল পুরানো execকৌতুক ভালো করতে হবে: ls>l;exec $0। খাটো, কিন্তু বিরক্তিকর।
manatwork

:>l;exec $0- ফাইল তৈরির
রেকর্ডটি ইনোড

7
আপনি মোছা সত্ত্বেও y, yesএটি এখনও একই ফাইল হ্যান্ডেলটিতে লিখতে থাকবে। দৌড়ান lsof | grep yesএবং আপনার মতো কিছু দেখা উচিত /path/to/y (deleted)। এটি ডিস্কটি পূরণ করবে এবং ব্যর্থ হবে।
মুড়ু

4
পরিবর্তে rm yআপনি ব্যবহার করতে পারেন >yযা বিদ্যমান ফাইলটি কেটে ফেলবে। এটিও খানিকটা খাটো।
আরগায়ার

6

টিআই-বেসিক, 12 বাইট

While 1
Archive A
UnArchive A
End

একই আকারের ব্যবহারকারী লিরটোসিয়াস্টের বিকল্প সমাধান :

While 1
SetUpEditor
Archive ∟1
End

এটি টিআই -৩৮ + এবং টিআই -৪৮ + সিরিজের ক্যালকুলেটরগুলিতে কাজ করবে।

হ্যাঁ, এগুলি যদি ইতিমধ্যে আর্কাইভ করা থাকে বা প্রোগ্রামের শুরুতে একেবারে আরম্ভ না করা হয় তবে এটি কাজ করে! টোকেনাইজেশনের কারণে প্রোগ্রামটি কেবল 12 বাইট


আমি জানি না ক্যালকুলেটর দ্বারা ব্যবহৃত ফ্ল্যাশ মেমরিটি "ডিস্ক" হিসাবে গণ্য হয় কিনা।
লিটারোসিয়াসট

1
@ লিরিটোসিস্ট জ্যামির প্রতিরক্ষাতে এসএসডিগুলি ফ্ল্যাশ মেমরি দিয়ে তৈরি =)
কর্ট

যে কোনও ক্ষেত্রে, বাইট গণনা কমপক্ষে 10 বাইট কম is ২ য় মেম স্ক্রিনটি 9 বাইট + প্রোগ্রামের নামের দৈর্ঘ্যের সমান একটি শিরোনাম গণনা করে, তবে আমরা এখানে না তাই আপনি এটি বিয়োগ করতে পারেন।
lirtosiast

@ লিরিটোসিস্ট এটি বারবার র‌্যাম নয়, ক্যালকুলেটারের রম (স্থায়ী মেমরি) লিখে এবং পড়ে reads অবশ্যই, ক্যালকুলেটরগুলির ভিতরে কোনও আসল হার্ড ড্রাইভ নেই :)
জ্যামি মাহাবিয়ার

@ লিরিটোসিস্ট ধন্যবাদ, আমি সে সম্পর্কে জানতাম না! (আমি ভাবছিলাম যে আমার টিআই -৪৮ + র প্রতিবেদন করা বাইটের পরিমাণ আমার হাতের গণনার সাথে কেন মেলে না ...) আমি আমার উত্তর আপডেট করেছি।
জ্যামি মাহাবিয়ার

6

সিপিথন 3.5, 33 16 বাইট

while 1:open("a")

হ্যাঁ সত্যিই. : ডি


while 1:open("a","w")সংক্ষিপ্ত এবং straceদেখায় যে অজগরটি উন্মুক্ত, fstat64 এবং বন্ধ করে দিচ্ছে, অবশ্যই I / O অপারেশনগুলি। যদি ফাইলটি aইতিমধ্যে বিদ্যমান থাকে তবে এটি আরও সংক্ষিপ্ত হতে পারে: while 1:open('a')এটি এখনও ফাইলের একটি open, fstat64এবং close, এমনকি সংশোধন করে rates atime
রাদোভান গারাবাক

@ রদোভানগারাবাক: 0 আপনাকে ধন্যবাদ, আমি সেই সহজ তথ্যটি জানতাম না! অবশ্যই, এটি বাস্তবায়ন নির্দিষ্ট।
বিড়াল

5

এমএটিএল , 10 বাইট

`1[]T3$Z#T

ব্যাখ্যা

এটি একটি অসীম লুপ যা পূর্ববর্তী ফাইলের বিষয়বস্তুগুলিকে ওভাররাইট করে বর্তমান ডিরেক্টরিতে 1 ডাকা একটি ফাইলে সংখ্যা লিখে inout

`       % do...while loop
  1     %   push number 1
  []    %   push empty array
  T     %   push "true"
  3$Z#  %   fwrite function. First input is file content. Second is file name;
        %   defaults to "inout" if empty. Third indicates that any previous
        %   file contents should be discarded
  T     %   push "true": loop condition 
        % implicitly end loop. Loop condition is "true", so the loop is infinite

5

হাস্কেল, 20 বাইট

f=writeFile"b""a">>f

"a"নামের ফাইলটিতে স্ট্রিং লিখুন "b"এবং পুনরাবৃত্তি করুন। writeFileফাইল বিদ্যমান থাকলে ওভাররাইট করে।


4

জাভাস্ক্রিপ্ট (নোড.জেএস), 43 41 বাইট

(c=x=>require("fs").writeFile("a",x,c))()

nullনামের একটি ফাইলকে লিখেছেন a, তারপরে পুনরাবৃত্তি করুন।


1
লেখার cবা xফাইলের কী হবে? 2 বাইট সঞ্চয় এছাড়াও, require`fs`কাজ করে না ?
চার্লি

1
লেখার সাথে @ চার্লি ভাল পয়েন্ট cবা xrequire`fs`দুর্ভাগ্যক্রমে কাজ হয় না, কারণ কোনও ফাংশন কল করতে ব্যাকটিক্স ব্যবহার করে এটি প্রথম আর্গুমেন্টের সাথে কল করে ["fs"](অ্যারে, যা প্রথম এবং একমাত্র উপাদানটি পাস স্ট্রিং) পরিবর্তে "fs"(কেবল স্ট্রিং)। console.log`test`উদাহরণস্বরূপ চেষ্টা করুন ।
মিশা পেরেকোভস্কি

4

জেডএসএইচ, 14 বাইট

for ((;;)) :>:

জ্যাশ, বাশ এবং অন্যান্য বোর্নের মতো শেলগুলির বিপরীতে, বেড়া ছাড়াইdo ... done লুপগুলিকে অনুমতি দেয় , তবে শর্তটি যথাযথভাবে সীমিত করা যায়।

বিকল্পভাবে, এর সাথে while:

while {} {:>:}

নোট যে :একটি অন্তর্নির্মিত। আপনি এই লুপটি স্থগিত করতে পারবেন না।

ডিজিটাল ট্রমা জবাবের মতোই নীতিটি হ'ল - ফাইলটিতে কিছুই লেখা হয় না, আইও খালি ফাইলটি তৈরি এবং ছাঁটাই থেকে আসে।


আমি কখনও ভাবি নি আমি muru, দেখতে না আমি বলি, অতি muru, আসা কোড গলফ খেলা এবং খেলার। পিপিসিগিতে আপনাকে স্বাগতম: ডি
বিড়াল

1
@ বিড়াল ধন্যবাদ। : ডিআই এর আগে একবার খেলেছে।
মুড়ু

3

মরিচা, 84 বাইট

fn main(){loop{use std::io::Write;std::fs::File::create("a").unwrap().write(b"a");}}

File::create একটি বিদ্যমান ফাইলকে কেটে ফেলা হয়, এটি নিশ্চিত করে যে আমরা ডিস্কের জায়গার বাইরে চলে যাব না।

ব্যবহৃত সংকলক (1.9 নাইটলি) অব্যবহৃত ফলাফল সম্পর্কে সতর্কতা জারি করে write(...)তবে তবুও সংকলন করে।


3

সি, 92 বাইট

#include <stdio.h>
main(){for(FILE*f=fopen("a","w+");fprintf(f," "),!fclose(f);;);return 0;}

দেখে মনে হচ্ছে আপনি 1 বাইট বাই বাঁচাতে পারবেন

  for(FILE*f=fopen("a","w+");fprintf(f," ")+fclose(f);;){}

এই লুপের সাথে সমস্যাটি হ'ল + আপনাকে গ্যারান্টিযুক্ত অর্ডার দেয় না।

বা রিকার্সিভ - যদি সংকলক সঠিকভাবে লেজ পুনরাবৃত্তি প্রয়োগ করে (এফ স্পষ্টভাবে অভ্যন্তরীণ স্কোপে থাকে) উপচে পড়া উচিত নয় should

85 বাইট

#include <stdio.h>
main(){{FILE*f=fopen("a","w+");fprintf(f," ");fclose(f);}main();}

আশা করি 85-বাইট সংস্করণটি স্ট্যাকটি ফুঁকবে না। : পি
ম্যাথুসাম মুট

2
@ ম্যাথুসামমুট: সহজ ফিক্স: অপটিমাইজেশন সহ সংকলন প্রয়োজন। টেল কল পুনরাবৃত্তি দিন বাঁচায়।
জোশুয়া

1
এখানে বাইট সংরক্ষণ করার অনেক সুযোগ রয়েছে। এর ভিতরে থাকা জিনিসগুলি প্যাক করার for(;;)জন্য এবং তার চেয়ে কম কর্মের জন্য আমার উত্তর দেখুন fprintf। আপনি যদি stdio.h (যা না আপনি) অন্তর্ভুক্ত করার দরকার পড়ে তবে আপনার কোনও জায়গার দরকার নেই:#include<stdio.h>
পিটার কর্ডেস

3

গণিত, 14 বাইট

For[,1>0,a>>a]

বর্তমান ডিরেক্টরিতে "a"নামক কোনও ফাইলটিতে বারবার স্ট্রিং লিখে aএটি উপস্থিত না থাকলে এটি তৈরি করে।


এটি "a" স্ট্রিং লিখবে নাকি ভ্যারিয়েবলের বিষয়বস্তু? এবং যদি দ্বিতীয়টি হয় তবে যদি সেই পরিবর্তনশীলটি এখনও সংজ্ঞায়িত না করা হয় তবে এটি কী করবে?
মাইকেল স্টারন

@ মিশেলস্টার্ন এটি ভেরিয়েবলটি লিখেছেন a, যা অপরিজ্ঞাত, তাই এটি কেবল লিখেছে a\n
LegionMammal978

3

সি, 40 বাইট

main(){for(;;)write(open("a",1)," ",1);}

এটি দ্রুত ফাইল বর্ণনাকারীর বাইরে চলে যাবে, যদিও; এটি দিয়ে কাটিয়ে উঠতে পারে:

45 , 43 বাইট

main(f){for(f=open("a",1);;)write(f,"",1);}

কেন দ্বিতীয় এফ মধ্যে একটি টাইপ না?
বিড়াল

2
@ কেট ইন সি (খুব কেএন্ডআর শৈলী) এটি ডিফল্ট হয় int
এডিএমজেড

1
জিসিসি এবং ঝনঝন দ্বিতীয় সংস্করণ সংকলন করবে না। এমনকি জিএনইউ সি স্ট্যাটিক / গ্লোবাল ভেরিয়েবলের গতিশীল সূচনা করার অনুমতি দেয় না (কলটি open()কোনও সংকলন-সময় ধ্রুবক নয়)। এছাড়াও, এটি ডিস্কের জায়গার বাইরে চলে যাবে, কারণ এখানে কোনও লিক নেই। utime("a","")লুপে চেষ্টা করুন , যা আপডেট করে রাখবে ctime। (আপনাকে এখনও openপরিচিত নামের একটি ফাইল তৈরি করতে হবে)।
পিটার কর্ডেস

@ পিটারকর্ডস আপনি ঠিক বলেছেন, নির্দেশ করার জন্য ধন্যবাদ। সংশোধন করা হয়েছে।
edmz

শেষ পর্যন্ত ডিস্কটি পূরণ না করার জন্য ওপি'র প্রয়োজনীয়তাটি এখনও পূরণ করে না, তবে সম্ভবত এখনও উত্তর হিসাবে রাখার মতো মূল্য রয়েছে। (যদি না আমার লুপে আমার উত্তর বন্ধ / পুনরায় খোলা (O_TRUNC) এর চেয়ে ভাল ধারণা থাকে) lazytimeআমার উত্তরে যেমনটি বলা যেতে পারে তার সাথে 24 ঘন্টা অন্তর্ভুক্ত একটি লিখুন ।
পিটার কর্ডেস

3

Amd64 লিনাক্সে সি, 36 বাইট (কেবলমাত্র টাইমস্ট্যাম্প), 52 49 বাইট (আসল ডিস্ক ক্রিয়াকলাপ)

আমি open(2)পতাকাগুলি হার্ড-কোড করি , সুতরাং এটি অন্যান্য এবিআইতে পোর্টেবল নয়। অন্যান্য প্ল্যাটফর্মের লিনাক্স সম্ভবত একই ব্যবহার করে O_TRUNC, ইত্যাদি। তবে অন্যান্য পসিক্স ওএস নাও পারে।

+4 বাইটমালিকের লেখার অ্যাক্সেসের মাধ্যমে ফাইলটি তৈরি করা হয়েছে তা নিশ্চিত করার জন্য একটি সঠিক অনুমতি টিপে পাস করতে , নীচে দেখুন। (এটি জিসিসি 5.2 এর সাথে কাজ করার জন্য ঘটে)

কিছুটা পোর্টেবল এএনএসআই সি, 38/51 বাইট (কেবল টাইমস্ট্যাম্প), 52/67 বাইট (আসল ডিস্ক ক্রিয়াকলাপ)

@ জেনসের টিপ সহ @ ক্যাট এর উত্তরের ভিত্তিতে।

প্রথম সংখ্যাটি বাস্তবায়নের জন্য যেখানে একটির ফেরতের মান intরাখতে FILE *fopen()পারে, দ্বিতীয়টি যদি আমরা এটি করতে না পারি। লিনাক্সে, হিপ অ্যাড্রেসগুলি কম জায়গার মধ্যে অ্যাড্রেস স্পেসের 32 বিট থাকে, তাই এটি ছাড়াই -m32বা না করেও কাজ করে -mx32। (ঘোষণার void*fopen();চেয়ে খাটো #include <stdio.h>)


টাইমস্ট্যাম্প মেটাডেটা কেবলমাত্র I / O :

main(){for(;;)close(open("a",577));}   // Linux x86-64

//void*fopen();       // compile with -m32 or -mx32 or whatever, so an int holds a pointer.
main(){for(;;)fclose(fopen("a","w"));}

বাইট লেখা, লিনাক্স ৪.২.০ + এক্সএফএস + এ আসলে ডিস্কটি চাপছে lazytime:

main(){for(;write(open("a",577),"",1);close(3));}

writeহ'ল লুপ শর্তটি, যা ঠিক থাকে কারণ এটি সর্বদা 1 প্রদান করে closeis

// semi-portable: storing a FILE* in an int.  Works on many systems
main(f){for(;f=fopen("a","w");fclose(f))fputc(0,f);}                 // 52 bytes

// Should be highly portable, except to systems that require prototypes for all functions.
void*f,*fopen();main(){for(;f=fopen("a","w");fclose(f))fputc(0,f);}   // 67 bytes

নন-পোর্টেবল সংস্করণটির ব্যাখ্যা:

ফাইলটি এলোমেলো আবর্জনা অনুমতি নিয়ে তৈরি করা হয়েছে। সঙ্গে gcc5.2 সঙ্গে -O0বা -O3, তবে এটাই হল মালিকের লেখার অনুমতি অন্তর্ভুক্ত করা হবে, কিন্তু এই নিশ্চিত নয়। 0666দশমিক 438 A তৃতীয় আর্গুমেন্টে openআরও 4 বাইট লাগবে । আমরা ইতিমধ্যে O_TRUNC এবং আরও হার্ড-কোডিং করছি, তবে এটি একই এবিআইতে একটি পৃথক সংকলক বা libc সহ ভেঙে যেতে পারে।

আমরা ২ য় তর্কটি বাদ দিতে পারি না open, কারণ আবর্জনার মানটি অন্তর্ভুক্ত হয় O_EXCLএবং O_TRUNC|O_APPENDতাই খোলাখুলি ব্যর্থ হয় EINVAL


আমাদের থেকে রিটার্ন মান সংরক্ষণ করার দরকার নেই open()। আমরা এটি ধরে নিই 3, কারণ এটি সর্বদা থাকবে। এমনকি যদি আমরা fd 3 খোলা দিয়ে শুরু করি তবে এটি প্রথম পুনরাবৃত্তির পরে বন্ধ হয়ে যাবে। সবচেয়ে খারাপ ক্ষেত্রে, open3 টি শেষ অবধি উপলব্ধ ফাইল বর্ণনাকারী পর্যন্ত নতুন এফডিএস খুলতে থাকে। সুতরাং, প্রথম 65531 অবধি write()কলগুলি ব্যর্থ হতে পারে EBADFতবে তারপরে প্রতিটি openতৈরি fd = 3 দিয়ে স্বাভাবিকভাবে কাজ করবে ।

577 = 0x241 = O_WRONLY|O_CREAT|O_TRUNCx86-64 লিনাক্সে। ছাড়া O_TRUNC, ইনোড মোড সময় এবং পরিবর্তনের সময় আপডেট হয় না, তাই একটি ছোট আরগ সম্ভব হয় না। O_TRUNCসংস্করণটির জন্য এখনও প্রয়োজনীয় writeযা প্রকৃত ডিস্ক ক্রিয়াকলাপ উত্পাদন করতে কল করে, জায়গায় পুনর্লিখন নয়।

আমি কিছু উত্তর দেখুন যে open("a",1)aইতিমধ্যে বিদ্যমান না থাকলে O_CREAT প্রয়োজন required O_CREATলিনাক্সে অষ্টাল 0100 (64, 0x40) হিসাবে সংজ্ঞায়িত করা হয়েছে।


কোনও রিসোর্স ফাঁস হয় না, তাই এটি চিরকাল চলতে পারে। straceআউটপুট:

open("a", O_WRONLY|O_CREAT|O_TRUNC, 03777762713526650) = 3
close(3)                                = 0
... repeating

অথবা

open("a", O_WRONLY|O_CREAT|O_TRUNC, 01) = 3
write(3, "\0", 1)                       = 1   # This is the terminating 0 byte in the empty string we pass to write(2)
close(3)                                = 0

আমি আমার সি ++ সংস্করণ openব্যবহার strace -eraw=openকরে এই এবিআইয়ের পতাকাগুলির দশমিক মান পেয়েছি ।

লিনাক্স lazytimeমাউন্ট অপশনটি সক্ষম করা ফাইল সিস্টেমে , কেবলমাত্র ইনড টাইমস্ট্যাম্পগুলিকে প্রভাবিত করে এমন একটি পরিবর্তন 24 ঘন্টা প্রতি কেবল একটি লেখার কারণ হতে পারে। সেই মাউন্ট বিকল্পটি অক্ষম থাকায়, টাইমস্ট্যাম্প আপডেট করা আপনার এসএসডি পরিধান করার একটি কার্যকর উপায় হতে পারে। (তবে অন্যান্য বেশ কয়েকটি উত্তর কেবল মেটাডেটা I / O করে)।


বিকল্প:

খাটো অ-কর্মরত :

main(){for(;;)close(write(open("a",577),"",3));}বন্ধ writeকরার জন্য একটি 3আরগ পাস করতে ফেরতের মান ব্যবহার করে । এটি অন্য বাইট সংরক্ষণ করে, তবে জিডিসি -O0 বা -O3 এ এমডি 64 এ কাজ করে না। 3 য় আর্গ এর আবর্জনা openআলাদা এবং এতে লেখার অনুমতি অন্তর্ভুক্ত নয়। aপ্রথমবার তৈরি হয়েছিল, তবে ভবিষ্যতের পুনরাবৃত্তিগুলি সমস্ত ব্যর্থ হয় -EACCESS

দীর্ঘস্থায়ী, বিভিন্ন সিস্টেম কল সহ :

main(c){for(open("a",65);pwrite(3,"",1);)sync();} জায়গায় জায়গায় বাইট পুনর্লিখন এবং কল sync() সমস্ত ফাইল সিস্টেম সিস্টেম-সংযোগের জন্য করে। এটি ড্রাইভটি আলোকিত রাখে।

কোন বাইটটি আমাদের খেয়াল নেই, সুতরাং আমরা চতুর্থ আরগটি কবিতায় পাস করি না। বিরল ফাইলগুলির জন্য হ্যাঁ:

$ ll -s a
300K -rwx-wx--- 1 peter peter 128T May 15 11:43 a

আমার অনুমান ~ 128TiB এর অফসেটে একটি বাইট লেখার ফলে এক্সএফএস 30000 বিবি স্পেস ব্যবহার করে সীমার মানচিত্রটি ধরে রাখতে পারে, আমার ধারণা। এইচএফএস +: আইআইআরসি, এইচএফএস + সহ ওএস এক্স এ চেষ্টা করবেন না, সুতরাং এটি ডিস্কটি পূরণ করবে।

এক্সএফএস হ'ল একটি যথাযথ bit৪ বিট ফাইল সিস্টেম, 8 টি এক্সপাইট পর্যন্ত স্বতন্ত্র ফাইলগুলিকে সমর্থন করে । অর্থাৎ 2 ^ 63-1, সর্বোচ্চ মান off_tধরে রাখতে পারে।

strace আউটপুট:

open("a", O_WRONLY|O_CREAT, 03777711166007270) = 3
pwrite(3, "\0", 1, 139989929353760)     = 1
sync()                                  = 0
pwrite(3, "\0", 1, 139989929380071)     = 1
sync()                                  = 0
...

2

র‌্যাকেট, 46 বাইট

(do()(#f)(write-to-file'a"f"#:exists'replace))

1
আমি র‌্যাকেটে উত্তর দেওয়ার কথা ভাবছিলাম, তবে আপনি আমাকে এতে মারধর করেছেন। : পি
বিড়াল

কৌতূহলের বাইরে, আপনি কি একটি ছোট উত্তর খুঁজে পেয়েছেন?
উইনি

1

ফ্যাক্টর, 73 বাইট

USING: io.files io.encodings
[ 0 "a" utf8 set-file-contents ] [ t ] while

ফাইলের সামগ্রীগুলি নুল বাইটে চিরতরে সেট করে।


1

সিবিএম বেসিক 7.0, 9 বাইট

0dS"a":rU

এই প্রোগ্রামটি যখন চালানো হয় তখন বারবার নিজেকে ডিস্কে সংরক্ষণ করে। এখানে আরও পাঠযোগ্য সংস্করণ যা বেসিক কীওয়ার্ড সংক্ষেপণ ব্যবহার করে না:

0 dsave "a" : run

1
যদিও এটি ক্যাসেট টেপটি ফুরিয়েছে? ;)
ম্যাথুসাম মুট

1
@ মাথুসামমুট এটি হবে0 SAVE "A" : RUN
সিলিংক্যাট

1

পাইথন, 32 বাইট

while 1:open("a","w").write("b")

দ্রষ্টব্য যে অজগর 3 এ চালানো হলে এটি অসীম সংখ্যক সতর্কতা তৈরি করবে। এছাড়াও, যদি কোনও অ-পুনঃ-গণনা বাস্তবায়ন চালানো হয় তবে এটি সম্ভবত এফডিএসের বাইরে চলে যাবে।


ঠিক যেমন একটি দ্রষ্টব্য, ওপেন কমান্ডের অংশ writeএবং "w"অংশ ছাড়াই একটি সংক্ষিপ্ত উত্তর উপস্থিত রয়েছে ।
আর

1

ডায়ালগ এপিএল 15.0, 17 বাইট (প্রতিযোগী নয়)

(⊢⊣⊃⎕NPUT⊢)⍣≢'A'1

ক্রোম বর্তমানে ইউ + 2262 কে ভুল উপস্থাপন করে। উপরের লাইনের মতো দেখতে হবে (⊢⊣⊃⎕NPUT⊢)⍣̸≡'A'1

এটি প্রতিযোগিতামূলক নয় কারণ 15 সংস্করণটি এখনও প্রকাশিত হয়নি।

প্রয়োগ ফাংশন (⊢⊣⊃⎕NPUT⊢)উপর 'A'1পর্যন্ত ইনপুট পরিবর্তিত হয় (অর্থাত কখনো):

⊢⊣⊃⎕NPUT⊢ একটি ফাংশন ট্রেন:

┌─┼───┐      
⊢ ⊣ ┌─┼─────┐
    ⊃ ⎕NPUT ⊢

ডানদিকের মোড রিটার্ন 'A'1অবিচলিত; এটি (ফাইলের নাম, ওভাররাইট-ফ্ল্যাগ) `PNPUT 'র সঠিক যুক্তি হবে।

'Of' 'A'1( 'A') এর প্রথম উপাদানটি প্রদান করে ; এই তথ্য লিখতে হবে।

তারপরে ⎕NPUTচালানো হয় এবং কতগুলি বাইট লেখা হয়েছিল তা রিপোর্ট করে (2 বা 3 ওএসের উপর নির্ভর করে); এটি হয়ে যায় সঠিক যুক্তি

বামদিক থেকে আবার অশোধিত ফিরে আসে 'A'1; এটি হল বাম যুক্তি

তার ডান যুক্তি উপেক্ষা করে এবং বাম যুক্তি (ফেরৎ 'A'1) এই নতুন মান খাওয়ানো হয়ে

যেহেতু নতুন মানটি পুরানোটির সাথে সমান, তাই অপারেশনটি (চিরকালের জন্য) অব্যাহত রয়েছে।



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