זאַמילאַ טשאַן: זאל ס שפּרינגען אין מאַריאָ. מאַריאָ איז אַ פּראָגראַם ווו מיר וועט מאַכן אונדזער אייגן, אָלבייט פּרימיטיוו, ווערסיע פון אַ קלאַסיש סופּער מאַריאָ ברידער שפּיל הינטערגרונט. פֿאַר דעם פּראָבלעם שטעלן, מיר ניטאָ געגאנגען צו ריקריייט די האַלב-פּיראַמיד פֿאַר מאַריאָ צו שפּרינגען אויף. אונדזער פּראָגראַם וועט זייַן ינטעראַקטיוו, אַזוי עס וועט פרעגן די באַניצער צו אַרייַנשרייַב אַ זיכער הייך פֿאַר דעם פּיראַמיד. און די פּראָגראַם וועט דרוקן אויס אַ העלפט-פּיראַמיד פון וואָס הייך, ווו די דנאָ לינקס האַש אַליינז מיט די דנאָ לינקס ווינקל פון דער וואָקזאַל רעזולטאַט פֿענצטער. זאל ס ברעכן דעם פּראָבלעם אין צוויי טיילן, איינער, באַקומען באַניצער אַרייַנשרייַב, און צוויי, דרוק אויס דעם פּיראַמיד. געדענקען אַז כאָטש די געטינט פֿונקציע וועט צוריקקריגן אַ ינטאַדזשער, איר האָבן צו מאַכן זיכער אַז דעם אַרייַנשרייַב מאכט חוש פֿאַר דיין פּראָגראַם, אַזוי אין מאַריאָ, עס וועט נישט טאָן נאָר אַ פּראָדוקט פֿאַר אַ ינטאַדזשער. איר וועט דאַרפֿן צו מאַכן זיכער אַז דער באַניצער ינפּוץ אַ ינטאַדזשער אַז ס 'ין די נידעריקער און אויבערשטער גווול פון דער פּיראַמיד אַז איר קענען דרוקן. פּער דעם ספּעק, דאָס איז 0 און 23 ינקלוסיוו. אויב דער באַניצער ינפּוץ אַ ינטאַדזשער אַרויס פון אונדזער אנגענומען גווול, דעמאָלט מיר ווילן צו פּינטלעך זיי ווידער און ווידער ביז זיי געבן אונדז אַ גילטיק ינטאַדזשער. איין וועג צו ענשור ריכטיק באַניצער אַרייַנשרייַב איז דורך ניצן אַ צי-בשעת שלייף, וואָס איז זייער ענלעך צו אַ בשעת שלייף. דער צי-בשעת שלייף עקסאַקיוץ די קאָד ין די גוף אַמאָל, און דעמאָלט טשעקס צי דער צושטאַנד איז באגעגנט אָדער נישט. דאס איז נוצלעך פֿאַר באקומען באַניצער אַרייַנשרייַב ווייַל איר וויסן אַז איר דאַרפֿן צו פּינטלעך זיי לפּחות אַמאָל. אויב די צושטאַנד איז נישט באגעגנט, די פּראָגראַם וועט ויספירן די שורה נאָך דיין צי-בשעת שלייף. אויב די צושטאַנד איז באגעגנט, כאָטש, דער שלייף וועט איבערחזרן. א צי-בשעת שלייף פֿאַר וואַלאַדייטינג באַניצער אַרייַנשרייַב וועט קוקן עפּעס ווי דעם. איך דערקלערן אַ בייַטעוודיק N, געטינט, און איבערחזרן ביז ען איז גילטיק. געדענק אַז ווען איר דערקלערן דיין בייַטעוודיק, עס דאַרף די צונעמען פאַרנעם, נאָר ווי אין קראַץ. אויב איך דערקלערן N ין מיין צי-בשעת שלייף, די מנוחה פון דעם פּראָגראַם וועט ניט זייַן קענען צו צוטריט עס. עס ס לימיטעד צו די קאַנפיינז פון די געגרייַזלט ברייסאַז. אַלע רעכט, אַזוי איצט אַז מיר ווע וואַלאַדייטאַד דער באַניצער ס אַרייַנשרייַב, מיר פאקטיש דאַרפֿן צו ציען דעם העלפט-פּיראַמיד. עס ס געמאכט אַרויף פון געדרוקט אותיות, אַזוי לאָזן ס מאַכן אַ האַלב-פּיראַמיד אין אַ פּשוט טעקסט רעדאַקטאָר. אויב מיר וועלן צו מאַכן אַ מאַריאָ נוסח פּיראַמיד פון הייך דרייַ אַז ס אַליינד אויף די לינקס זייַט פון אונדזער פֿענצטער, דעמאָלט מיר 'ד טיפּ צוויי כאַשאַז, גיט אַרייַן, דעמאָלט טיפּ דרייַ כאַשאַז, גיט אַרייַן, און דעמאָלט טיפּ פיר. אבער אין דעם פּראָבלעם שטעלן, אונדזער העלפט-פּיראַמיד האט צו זייַן רעכט אַליינד. ניצן אַ נאָרמאַל קלאַוויאַטור, ווי זאל איר מאָדיפיצירן דעם טעקע צו רירן כאַשאַז איבער צו די רעכט זייַט? איך זאל נוצן צו שטרייכט, צוויי אויף די Top רודערן און איינער אויף דער רגע. וואָס טוט נישט קוקן ווי פייַן, כאָטש, אַזוי לאָזן ס פאַרבייַטן די שטרייכט מיט ספּייסיז, און עס מיר האָבן אַ האַלב-פּיראַמיד פון הייך דרייַ. פרובירט און געדענקען דעם טעקסט רעדאַקטאָר בייַשפּיל ווי איר אָנהייבן טראכטן צוריק צו סי זאל ס פּרובירן און רעכענען אויס עטלעכע מין פון מוסטער אַז מיר קענען שטעלן אין אַ שלייף בויען. נעמען אַ בייַשפּיל הייך, זאָגן אַכט, און זען אויב איר קענען אָנהייבן צו קומען אַרויף מיט אַ מוסטער. דער ערשטער רודערן וועט האָבן זיבן ספּייסיז נאכגעגאנגען דורך צוויי כאַשאַז. די רגע רודערן וועט האָבן זעקס ספּייסיז און דרייַ כאַשאַז, און אַזוי אויף ביז די אַכט רודערן. אבער ווי טאָן איר וואָלט פאָרשטעלן די ענט רודערן? געדענקען אַז פּראָגראַממינג קאַנווענשאַן איז נול ינדעקסט. אַז מיטל אַז איר אָנהייב קאַונטינג בייַ נול, אַזוי דער ערשטער רודערן איז טעקניקלי רודערן נומער נול מיט צוויי כאַטשיז, רודערן נומער איינער האט דרייַ כאַשאַז, רודערן נומער צוויי האט פיר כאַשאַז, אַזוי ווייַטערדיק דעם מוסטער פֿאַר קיין רודערן נומער N, עס זענען N פּלוס 2 כאַשאַז. איך וועט לאָזן עס צו איר, כאָטש, צו געפינען אויס דער מוסטער פֿאַר די ספּייסיז. געדענקען אַז אייער מוסטער וועט זייַן אַ ביסל אַנדערש אויב איר קלייַבן צו אָנהייבן דיין ציילן פון איינער און נישט נול. איצט, איר האָט אַ מוסטער פֿאַר קיין אַבסטראַקט רודערן ען. איר וויסן ווי פילע ספּייסיז צו דרוקן און ווי פילע כאַשאַז, אַזוי פֿאַר יעדער רודערן, אַז נומער וועט טוישן. אבער דער זעלביקער פּראָצעס פון דרוק אַ איין כאַראַקטער, אָדער אַ פּלאַץ אָדער אַ האַש, איז ריפּיטיד. אזוי אַלע איר האָבן צו טאָן איז ריפּיטידלי דרוק אַז כאַראַקטער פֿאַר ווי פילע מאל ווי דיין מוסטער דאַטערמאַנז. אזוי ווי טאָן מיר איבערחזרן פּראַסעסאַז? אין קראַצן, מיר געניצט די איבערחזרן בלאָק. אין C, מיר וועט נוצן אַ פֿאַר שלייף. זאל ס קוק בייַ די סינטאַקס פֿאַר פֿאַר לופּס. יעדער פֿאַר שלייף איז פארפאסט פון דרייַ טיילן, אַ יניטיאַליזאַטיאָן, אַ צושטאַנד, און אַ דערהייַנטיקן. דיין פֿאַר שלייף וועט ינישאַלייז אַ בייַטעוודיק ווען עס ערשטער גייט אריין דער פֿאַר שלייף. אויב די צושטאַנד איז באגעגנט, דער גוף פון דער שלייף וועט ויספירן. דערנאָכדעם, די דערהייַנטיקן וועט ויספירן. אויב די צושטאַנד איז נאָך באגעגנט, די שלייף וועט ויספירן און דערהייַנטיקן און איבערחזרן ווי לאַנג ווי דיין צושטאַנד יוואַליוייץ צו אמת. ניטאָ צושטאַנד מוזן יווענטשאַוואַלי וואַלואַטע צו פאַלש, כאָטש, ווייַל ניט ענלעך קראַצן, מיר טאָן ניט האָבן קיין פאָרעווער לופּס. דיין פּראָגראַם מוזן סוף יווענטשאַוואַלי. דאָ ס אַ בייַשפּיל פון אַ פֿאַר שלייף אַז איר זאל וועלן צו נוצן פֿאַר מאַריאָ. די יניטיאַליזאַטיאָן דערקלערט אַ ינטאַדזשער איך מיט ווערט 0. ווי לאַנג ווי איך איז ווייניקער ווי די הייך, דער גוף פון דער שלייף וועט ויספירן און פאַרגרעסערן איך דורך איין און איבערחזרן ביז איך איז גרעסער ווי אָדער גלייַך צו דער הייך. איצט, מיין פֿאַר שלייף איז נול אינדעקס. דער ינט איך סטאַרץ אין נול, נישט איין. אויב איך אויסדערוויילט איינער, דעריבער מיין צושטאַנד וואָלט אויך האָבן צו זייַן אַנדערש פֿאַר די שלייף צו ויספירן די זעלביקער נומער פון מאל. געדענקען דעם קערפאַלי ווען איר רע טשוזינג דיין יניטיאַליזאַטיאָן און דיין צושטאַנד, און באַראַטנ דעם טשאַרט צו טאָפּל טשעק. איינער פון די גרויס זאכן וועגן קאָמפּיוטער וויסנשאַפֿט איז אַז דאָרט ס נאָר אַזוי פילע וועגן צו ויספירן זאכן. איר קענען קלייַבן צי איר אָנהייב אין נול אָדער איינער. אויב איר טאָן נישט וועלן צו נוצן אַ פֿאַר שלייף, איר קענען אויך נוצן אַ בשעת שלייף צו איבערחזרן סטייטמאַנץ ווי לאַנג ווי איר האַלטן די עסאַנס פון אַ פֿאַר שלייף, יניטיאַליזאַטיאָן, צושטאַנד, און דערהייַנטיקן. אַמאָל מיר רעכענען אויס די פֿאַר שלייף אַז מיר ניטאָ רובֿ באַקוועם מיט, דעמאָלט מיר קענען גאַנץ מאַריאָ. מיר ערשטער אָפּגעשטעלט פֿאַר באַניצער אַרייַנשרייַב און דעמאָלט יידענאַפייד אַ מוסטער פֿאַר קיין רודערן ען. אזוי פֿאַר יעדער רודערן פון נול צו N מינוס 1 וועט דרוקן די צונעמען נומער פון ספּייסיז, דעמאָלט דער צונעמען נומער פון כאַשאַז לויט אונדזער מוסטער, און דעמאָלט אַ נייַ שורה. מיט וואָס, איר האָבן דיין פּיראַמיד. מייַן נאָמען איז זאַמילאַ, און דאָס איז געווען מאַריאָ.