રોબ બોડેન: હાય. હું રોબ છું, અને મને આશા છે તમારા 15 ના રમત રમત. હવે, તમે જરૂર ચાર કાર્યો છે આ કાર્યક્રમ અમલમાં - આરંભ, , ડ્રો ખસેડવા માટે, અને જીત્યો હતો. તેથી, ચાલો આરંભ જુઓ. અહીં, અમે અમે છો પ્રથમ વસ્તુ જુઓ શું થઈ રહ્યું ચલ જાહેર છે કાઉન્ટર કહેવાય છે. તેનો પ્રારંભ કરી રહ્યું છે ડી વખત ડી ઓછા 1. ડી પરિમાણ યાદ રાખો કે અમારા બોર્ડના. કેવી રીતે આરંભ કામ ચાલી રહ્યું છે તે હશે છે સમગ્ર બોર્ડ ફરી વળવું અને અમે શરૂ રહ્યા છીએ ટોચ ગયા છો. અને ચાલો માત્ર કહે છે અમે 4 4 દ્વારા બોર્ડ હોય છે. તેથી ટોચ અમે છો બાકી કહેવું જાઉં 15 છે. અને પછી અમે માત્ર ગણતરી રહ્યા છીએ બોર્ડ દ્વારા, 15, 14, 13 કહે છે 12, 11, 10, 9, 8, 7, 6, 5, 4, અને તેથી પર. તેથી ટોચ ડાબી, અમે ડી વખત પ્રયત્ન અપેક્ષા ડી ઓછા 1, 4 આ 4 માં જે કેસ 16 બાદ કરી રહ્યું છે 1, યોગ્ય રીતે 15 છે. અમે જઈ રહ્યાં છો જ્યાં અને હવે અહીં છે સમગ્ર બોર્ડ પર ફરી વળવું. અને અમે દરેક સ્થિતિ સુયોજિત રહ્યા છીએ ના વર્તમાન કિંમત બોર્ડ અમારા કાઉન્ટર, અને પછી કાઉન્ટર રહ્યું છે હ્રાસ માટે, કે જેથી આગામી અમે પહોંચી સ્થિતિ હોય રહ્યું છે પ્રતિ એક કરતાં ઓછી હોવી અગાઉના સ્થાન. તેથી અમે શરૂઆતમાં 15 હતી અને કાઉન્ટર હ્રાસ. તેથી તો અમે આ માટે 14 સોંપી રહ્યા છીએ આગામી સ્થિતિ, હ્રાસ પ્રતિ, અને અમે સોંપાયેલ રહ્યા છીએ 13, અને તેથી. છેલ્લે, અમે તે ખૂણે નિયંત્રિત કરવા માટે જરૂર છે કેસ જ્યાં, બોર્ડ પણ ધરાવે છે પરિમાણ, પછી માત્ર, 15, 14, 13 કરી 12, બધી રીતે નીચે થી 3, 2, 1, છે અમને છોડી જવા એક unsolvable બોર્ડ. અને આપણે 1 અને 2 સ્વેપ છે. ડી મોડ 2 0 સમકક્ષ હોય છે તેથી, જો, તે છે અમે તપાસ જઈ રહ્યાં છો કેવી રીતે તે જોવા માટે જો. ડી મોડ 2 0, પછી પંક્તિ ડી ઓછા માં સમકક્ષ હોય તો 1, જે નીચે પંક્તિ છે, અને સ્થિતિ ડી ઓછા 2, અથવા સ્તંભ D બાદ 2, અમે 2 માં સુયોજિત રહ્યું છે, અને કરી રહ્યાં છો સ્તંભ ડી ઓછા 3 અમે છો 1 પર સેટ રહ્યું. જેથી માત્ર વિપરીત જ્યાં આ 1 અને 2 હાલમાં છે. છેલ્લે, અમે ખૂબ જ સેટ રહ્યા છીએ તળિયે જમણી ખાલી સમાન, જ્યાં ખાલી હેશ બતાવવી, 0 તરીકે ટોચ પર. તેથી, કે, સખત રીતે જરૂરી હતી લૂપ માટે આ હોય રહ્યું છે કારણ કે 0 થી નીચે જમણી, કારણ કે સેટ કાઉન્ટર કુદરતી 0 સુધી પહોંચી જશે. પરંતુ એ જાણીને અમને પર આધાર રાખે છે કે ખાલી ના 0 શોધવા માટે hashed હતી. હું પાછળથી આ કાર્યક્રમ જાય અને જો 100 ના ટોચ પર ખાલી બદલવા તે હજુ પણ કામ કરવું જોઈએ. તેથી આ માત્ર ખાતરી કરો કે બનાવે છે તળિયે જમણી ખરેખર સમાન છે અમારા ખાલી મૂલ્ય. છેલ્લે, અમે બે વૈશ્વિક ચલો હોય છે, તેથી હું અને ખાલી જ ખાલી, અને અમે જુઓ તે ટોચ પર જાહેર કરી હતી. અને અમે તે બે વૈશ્વિક ઉપયોગ જઈ રહ્યાં છો આ ટ્રેક રાખવા માટે ચલો ખાલી સ્થિતિ, અમે ન કરી શકે તે સમગ્ર પાસેથી જોવાની જરૂર ખાલી દરેક એક શોધવા માટે બોર્ડ અમે એક ચાલ ચાલવાનો પ્રયત્ન કરો સમય. તેથી ખાલી ની પરિસ્થિતિ હંમેશા છે તળિયે જમણી પર શરૂઆત કરવા માટે જઈ રહી છે. તેથી, નીચે જમણી દ્વારા આપવામાં આવે છે સૂચકાંક ડી ઓછા 1, ડી 1 બાદ. તેથી, તે આરંભ છે. હવે અમે ડ્રો પર ખસેડો. તેથી, ડ્રો જ કરી રહ્યું છે અમે ભારપૂર્વક કહેવું રહ્યા છીએ જ્યાં સમગ્ર બોર્ડ પર. અને અમે માત્ર કિંમત પ્રિન્ટ માંગો છો કે બોર્ડના દરેક સ્થિતિમાં છે. અહીં, અમે છે કે કિંમત છાપવા કરી રહ્યાં છો બોર્ડના દરેક સ્થિતિમાં. અને અમે કરી રહ્યા છીએ કે નોટિસ -. અને તે માત્ર printf કહી છે કે ગમે તો એક આંકડાના અથવા છે જો બે આંકડાના નંબર છે, અમે હજુ પણ તે કરવા માંગો છો , પ્રિન્ટ બહાર બે કૉલમ લાગી કે જેથી અમે બે આંકડાના અને એક હોય તો એ જ બોર્ડ માં અંક નંબર છે અમારા બોર્ડ હજુ પણ સરસ અને ચોરસ જોઈશું. તેથી અમે દરેક કિંમત માટે કરવા માંગો છો બોર્ડ માં, ખાલી સિવાય. તેથી, જો બોર્ડ માં સ્થાન જેટલી જ થાય છે ખાલી, તો પછી અમે ખાસ માત્ર નીચા પ્રિન્ટ માંગો છો ખાલી પ્રતિનિધિત્વ કરે છે, બદલે માટે ના ગમે કિંમત ખાલી ખરેખર છે. છેલ્લે, અમે પ્રિન્ટ માંગો છો નવી લાઇન બહાર. આ અંદર હજુ પણ છે નોંધ કરો કે બહાર લૂપ માટે બાહ્ય, પરંતુ લૂપ માટે આંતરિક. લૂપ માટે આ બાહ્ય વારો આવે છે બધા પંક્તિઓ પર, અને તેથી આ printf છે માત્ર એક નવી લાઇન છાપો, જેથી રહ્યું અમે આગામી પંક્તિ છાપે પર ખસેડો. અને તે ડ્રો માટે છે. તેથી, હવે ચાલ પર ખસેડો. હવે, અમે ટાઇલ ચાલ પસાર થાય વપરાશકર્તા રમતમાં દાખલ થાય છે - તેઓ તેઓ ખસેડવા માંગો છો ટાઇલ દાખલ કરો - અને તમે એક bool પરત માનવામાં આવે છે, જેથી કરી રહ્યાં છો સાચું કે ખોટું, તેના પર આધાર રાખીને ક્યાં કે ચાલ ખરેખર છે કે કેમ માન્ય - કે ટાઇલ છે કે નહીં તે ખાલી જગ્યામાં ખસેડવામાં આવ્યા છે. અહીં, અમે એક સ્થાનિક ચલ જાહેર, tile_1 અને જવું છે tile_j, blank_i અને blank_j જેવી જ હોય ​​છે, તે સાચવી રાખે બનશે સિવાય ટાઇલ ઓફ સ્થાન. હવે અહીં, અમે blank_i ઉપયોગ જઈ રહ્યાં છો અને blank_j અને તેથી, બધા હક કહે અહીં બોર્ડ પર ખાલી છે. હવે, ખાલી ઉપર ટાઇલ છે? ખાલી ડાબી ટાઇલ છે? ખાલી જમણી ટાઇલ છે? ખાલી નીચે ટાઇલ છે? તેથી, ટાઇલ તે કોઇ થયેલ છે કે નહિં સ્થિતિ, પછી આપણે જાણીએ છીએ કે ટાઇલ ખાલી હાજર ખસેડવામાં કરી શકાય છે ખાલી ખસેડવામાં કરી શકાય છે કે જ્યાં ટાઇલ હાલમાં છે. અહીં, અમે કહીએ છીએ જો સ્થાને બોર્ડ blank_i 1 બાદ blank_j. તેથી આ કહેતા છે ટાઇલ છે વર્તમાન ખાલી ઉપર? અને તેથી તો અમે યાદ રહ્યા છીએ કે ટાઇલ ની સ્થિતિ છે. આ ટાઇલ સ્થિતિ blank_i છે ઓછા 1 અને blank_j. હવે પ્રથમ, અમે આ તપાસ કરવામાં અહીં, તેથી blank_i છે 0 કરતાં મોટો. અમે તે શા માટે કરવા માંગો છો? વેલ, ખાલી ટોચ પંક્તિ છે બોર્ડના, તો પછી અમે નથી માંગતા કારણ ટાઇલ માટે ખાલી ઉપર જુઓ ટોચ ઉપર કંઈ નથી બોર્ડના પંક્તિ. આ તમને મેળવવામાં અંત શકે છે કેવી રીતે સેગ્મેન્ટેશન ક્ષતિમાં અથવા કંઈક તમારા કાર્યક્રમ માત્ર કામ કરી શકે છે અનપેક્ષિત રીતે. તેથી, આ અમે કરી ખાતરી કરો કે બનાવે છે માન્ય નથી કે સ્થળોએ જુઓ. હવે અમે માટે આ જ વાત કરી રહ્યા છીએ અન્ય તમામ શક્ય મિશ્રણોનો. અહીં, અમે ખાલી નીચે શોધી રહ્યાં છો કે ટાઇલ છે તે જોવા માટે. અને અમે પણ ખાતરી કરો કે અમે છો કરી છે નથી નીચે પંક્તિ પર, અથવા અન્ય અમે ટાઇલ જોવા ન જોઈએ. અહીં, અમે ડાબી નજર રહ્યા છીએ તે ટાઇલ જો ખાલી જોવા માટે. અને અમે ડાબી જોવા ન જોઈએ અમે leftmost સ્તંભમાં છો. અને અહીં અમે નજર રહ્યા છીએ અધિકાર ખાલી છે, અને અમે જોઈએ અમે છો જમણી જુઓ જમણીબાજુનીસ્થિતિ સ્તંભમાં. તેથી, તે વસ્તુઓ કંઈ સત્ય હતા, કે ટાઇલ અડીને ન હતી એનો અર્થ એ થાય ખાલી અને અમે ખોટા પાછા આવી શકો છો. આ પગલું માન્ય ન હતી. પરંતુ, એક તે સાચું હોય તો, પછી પર આ બિંદુએ, અમે તે tile_i જાણો છો અને tile_j પાંચ સમાન હોય છે ટાઇલ ઓફ સ્થાન. અને તેથી, અમે બોર્ડ અપડેટ કરી શકો છો સ્થિતિ tile_i અને tile_j. અમે નવી કિંમત ખાલી હશે ખબર અને તે સ્થિતિ blank_i blank_j, મૂળ હતી જે ખાલી - અમે ટાઇલ ચાલે છે ખબર ત્યાં ખસેડો. અમે ખરેખર કરવા નથી નોંધ કરો એક અહીં વાસ્તવિક સ્વેપ એ આપણે જાણીએ છીએ કારણ કે દાખલ કરવાની જરૂર છે કે કિંમતો તે સ્થિતિ માં. અમે કામચલાઉ જરૂર નથી આસપાસ ચલ. છેલ્લે, અમે તે અમે યાદ કરવાની જરૂર છે છે કે અમારી વૈશ્વિક ચલો હોય સ્થિતિ રાખવામાં આવેલ ખાલી છે. તેથી અમે સ્થિતિ અપડેટ કરવા માંગો છો જ્યાં ટાઇલ હોઈ ખાલી મૂળ હતું. છેલ્લે, અમે કારણ કે સાચું પરત ચાલ સફળ રહે છે. અમે સફળતાપૂર્વક સ્વેપ ટાઇલ સાથે ખાલી. બધા હક છે, તેથી અમે છેલ્લા જીત્યું તપાસ કરવાની જરૂર છે. તેથી, જીતી જ રીતે એક bool આપે છે સાચું છે તે દર્શાવવા માટે ચાલે છે કે વપરાશકર્તા રમત જીત્યો છે. અને ખોટા સૂચવે છે કે રમત હજુ પણ ચાલે છે. વપરાશકર્તા જીતી નથી. તેથી, આ ખૂબ ખૂબ પ્રયત્ન રહ્યું છે Init વિરુદ્ધની, જ્યાં આરંભ, અમે બોર્ડ આરંભ કરવા માટે, યાદ તેથી 15, 14, 13, 12, છે. જીતી, જ્યારે અમે તપાસ કરવા માંગો છો જો બોર્ડ તેથી 1, 2, 3, 4, 5, અને છે. તેથી, અમે પ્રારંભ રહ્યા છીએ અમારા કે શું ટોચ કારણ 1 કાઉન્ટર બોર્ડના રાખવો જોઈએ. અને પછી અમે લૂપ રહ્યા છીએ સમગ્ર બોર્ડ પર. માતાનો આ પરિસ્થિતિ અવગણો એક બીજા માટે. અને આ સ્થિતિ માત્ર રહ્યું છે ચેક આ સ્થાને બોર્ડ છે વર્તમાન ગણતરીઓ સમાન? જો આમ હોય, તો ગણક વધારો કે જેથી અમે જોવા આગામી સ્થિતિ એક વધારે છે અમે હમણાં હોય છે સ્થિતિ કરતાં. જેથી અમે કેવી રીતે મેળવી છે ટોચ ડાબી 1 પ્રયત્ન કરીશું. 2 ના ગણતરી વધારો. આગામી સ્થિતિ જુઓ. આ 2 છે? જો આમ હોય, 3 ગણના વધારો. આગળ સ્થિતિ, આ 3 છે? જો આમ હોય, તો ગણક વધારો 4 માટે, અને તેથી. તેથી, પર કોઇપણ સ્થિતિમાં હોય તો અમારા ગણતરી જેટલી નથી કે બોર્ડ, પછી અમે તે કારણ ખોટા પરત કરવા માંગો છો કે કેટલાક ટાઇલ છે એનો અર્થ એ થાય નથી યોગ્ય સ્થિતિમાં. અહીં, આ સ્થિતિ શું કરે છે? વેલ, આ ખાલી યાદ રાખો કે નીચે જમણી બાજુ પર જાઓ માનવામાં. અને ખાલી કિંમત કદાચ જરૂરી ની કિંમત જેટલી કે પહોંચી રહ્યું છે સામનો નીચે જમણા ખૂણે. તેથી અમે ખાસ ચેક કરવા માંગો છો તો હું બરાબર ડી ઓછા 1 અને જે સમકક્ષ સમકક્ષ હોય ડી ઓછા 1 સમકક્ષ - કહે છે, જે જો આપણે નીચે અધિકારના તરફ જોઈ રહી છે બોર્ડ - પછી અમે માત્ર ચાલુ રાખવા માંગો છો. અમે આ ચોક્કસ અવગણો કરવા માંગો છો આ માટે લૂપ પુનરાવૃત્તિ. અને તેથી અમે આ મારફતે વિચાર વ્યવસ્થા કરો લૂપ માટે નેસ્ટ, કે અર્થ એ થાય કે માં છે તેવું કોઈને પણ ટાઇલ હતી ખોટો સ્થાન. અને અમે આ લૂપની બહાર ભંગ અને આગામી અહીં, જ્યાં અમે સાચું પાછા આવી શકો છો. બધા ટાઇલ્સ યોગ્ય સ્થાનો હતા અને તે વપરાશકર્તા છે એનો અર્થ એ થાય રમત જીતી લીધી હતી. અને તે છે. મારું નામ રોબ બોડેન છે, અને આ 15 હતી.