BrainFlow
ব্রেনফ্লো কি?
ব্রেইনফ্লো যোগ করা কার্যকারিতা এবং বিভ্রান্তির জন্য 3 অতিরিক্ত কমান্ড সহ ব্রেইনএফ ** কে (বিএফকে) এর একটি এক্সটেনশন।
কি আদেশ?
সাধারণ বিএফকে কমান্ডের পাশাপাশি আমাদের রয়েছে:
^ কক্ষে মান উপর নির্ভর করে সেল # টি জাম্প। উদাহরণস্বরূপ: আমরা যদি 4 টির মান সহ # 0 কক্ষে থাকি তবে ^ আমাদের সেল # 4 এ উঠাবে।
= কক্ষের সূচককে ঘরের মান নির্ধারণ করে। উদাহরণস্বরূপ: যদি আমরা 0 এর মান সহ # 4 কক্ষে থাকি, = আমাদের মানকে 4 এ সেট করে।
& বর্তমান কক্ষের মানের উপর ভিত্তি করে বর্তমান কক্ষে মানটির সাথে সেলটি মান সমান করে দেবে। (এটির কথায় কথায় বলা শক্ত, সুতরাং এখানে একটি উদাহরণ রয়েছে!) প্রাক্তন: আমরা সেল # 33 এ রয়েছি এবং এই কক্ষে আমাদের বর্তমান মান 7, এবং আমাদের বর্তমান মান # 33 কোষে সেট করবে যা সেল # 7 এর মান হিসাবে আছে to
Ptionচ্ছিক চ্যালেঞ্জ
নিম্নলিখিতগুলির কোনওটি পূরণ করা আপনার বাইট গণনায় নির্দিষ্ট বোনাস প্রয়োগ করবে।
Interpreter written in BrainFlow
(নমুনা দ্বারা ব্যাখ্যা করা যেতে পারে এবং কমপক্ষে একটি অর্থবহ contains = বা & থাকতে পারে): স্কোর / 3
Interpreter written in BrainF**k:
স্কোর / 2
Doesn't contain any English letters (in either upper or lower case):
স্কোর - 20
Doesn't contain any of the BrainFlow / BFk commands in the interpreter itself:
স্কোর - 50
উদাহরণ
জাভা দোভাষী একটি উদাহরণ:
import java.util.Scanner;
public class Interpreter {
private String exp;
private int[] values = new int[256];
private int index = 0;
private Scanner in;
public Interpreter(String exp, Scanner in){
this.exp = exp;
this.in = in;
}
public void run(){
//Reset index and values
for(int i = 0; i < values.length; i++){
values[i] = 0;
}
this.index = 0;
System.out.println("Starting...");
this.process(this.exp, false);
System.out.println("\nDone.");
}
private void process(String str, boolean loop){
boolean running = loop;
do{
for(int i = 0; i < str.length(); i++){
switch(str.charAt(i)){
case '>':increaseIndex();break;
case '<':decreaseIndex();break;
case '+':increaseValue();break;
case '-':decreaseValue();break;
case '[':
String s = str.substring(i);
int j = this.getClosingIndex(s);
if(this.values[this.index] == 0){
i +=j;
break;
}
process(s.substring(1, j), true);
i += j;
break;
case '.':
int v = this.values[this.index];
System.out.print((char)v);
break;
case ',':this.values[this.index] = this.in.next().charAt(0);break;
case '^':this.index = this.values[this.index];break;// Jumps to the index specified in the current cell.
case '=':this.values[index] = this.index;break;// Sets the value at cell #x to x
case '&':this.values[index] = this.values[this.values[index]];break;// If cell contains X, makes value of current cell equal to value in cell X
default:
//Ignore others
break;
}
}
if(this.values[this.index] == 0){
running = false;
}
}while(running);
}
private void increaseIndex(){
if(++this.index >= this.values.length){
this.index = 0;
}
}
private void decreaseIndex(){
if(--this.index < 0){
this.index = this.values.length - 1;
}
}
private void increaseValue(){
int newVal = this.values[this.index] + 1;
if(newVal >= this.values.length){
newVal = 0;
}
this.values[this.index] = newVal;
}
private void decreaseValue(){
int newVal = this.values[this.index] - 1;
if(newVal < 0){
newVal = this.values.length - 1;
}
this.values[this.index] = newVal;
}
private int getClosingIndex(String str){
int openings = 0;
int closings = 0;
for(int i = 0; i < str.length(); i++){
char c = str.charAt(i);
if(c == '['){
openings++;
}else if(c == ']'){
closings++;
}
if(openings == closings){
return i;
}
}
return -1;
}
}
গল্ফডের কাছাকাছিও নয় তবে একটি ভাল সূচনা পয়েন্ট সরবরাহ করা উচিত।
সর্বনিম্ন চূড়ান্ত স্কোর জয়, যেখানে প্রযোজ্য চ্যালেঞ্জ হ্রাস বিবেচনার পরে বিবেচিত হওয়ার পরে আপনার প্রোগ্রামে স্কোর সংখ্যা বাইট।
পরীক্ষামূলক
নিম্নলিখিত ব্রেইনফ্লো প্রোগ্রামটি স্টিডিনের কাছ থেকে '+' চর পড়ার পরে নির্দিষ্ট আউটপুট প্রিন্ট করা উচিত:
<<,++++[>++++[>++++<-]<-] Set cell #0 to a value dependent on input
>>>+[[-]&>=]+& Set every other cell to that value
[ Start loop
+^ Add one to current value and jump to that cell index
. Print the value at that cell
& Copy value from specified cell
] End loop
আউটপুট:
ðñðòñðòðôóòñóñôóðòõóñõðôôóòñööõôöðóöðõðùõñô÷ùõóñöóùñô÷øôøõôòöõóðòöóñ÷ðõôûôòú÷úø÷öùøöùñøðùúðûðþöûñùýøðòñ
subset
হয়েছে extension
। সাহায্য করার জন্য ধন্যবাদ.
++&
আমার বয়স পুনরুদ্ধার করতে বা আমার+++&
জন্মের মাসটি পুনরুদ্ধার করতে পারি Ass অবশ্যই