I am writing a small program that calculates--recursively--all paths to (0,0) on the grid given some walls that need to be avoided. The grid looks something like this:
. . . . . . . . . . .
| . . | . . . . . . .
. . | . . . . . . . .
. . - - - . . - - - -
. | . . . . . | . . .
. . . . . | . | . . .
. . . . . . - - . . .
. - - - . . . | . . .
. | . . . . . | . . .
. | . . . . . . . . .
. . . | . . . . . . O
You must get to the origin without ever increasing distance to the origin in your path.
I have written this code to find all paths:
int recursive_find_path(unsigned int x, unsigned int y, unsigned int distance, std::vector<std::vector<GRID_STATUS> > blocked_grid){
//if(x>blocked_grid.size()-1 or y>blocked_grid[x].size()-1 or x<0 or y<0 or x+y > distance or blocked_grid[y][x] == GRID_BLOCKED or blocked_grid[y][x] == GRID_TRAVELLED)
if(x>blocked_grid.size()-1 or y>blocked_grid[x].size()-1 or x<0 or y<0 or x+y<distance or blocked_grid[y][x] == GRID_BLOCKED){
return 0;
}
if(blocked_grid[y][x] == GRID_TRAVELLED){
return 0;
}
if(x==0 and y==0){
return 1;
}
blocked_grid[y][x] = GRID_TRAVELLED; // set position to 'travelled' on to avoid infinite recursion
return recursive_find_path(x-1,y, distance-1,blocked_grid)+recursive_find_path(x,y-1, distance-1, blocked_grid)+recursive_find_path(x+1,y, distance-1, blocked_grid);
}
NOTE: GRID_TRAVLLED and GRID_BLOCKED are values defined elsewhere in the program but essentially are just tokens to indicate that there is a wall or the point has been travelled on.
However, when running, the program outputs that there are zero paths!
Admittedly, I am not sure how many paths there are but I can at least count a few thus it can't be zero.
Does anyone know what is going wrong here?
Thanks in advance
edit
. . . . . . . . . . . . . . . . . . .
X . . X . . . . . . . . . . . . . . .
. . X . . . . . . . . . . . . . . . .
. . X X X . . X X X X . . . . . . . .
. X . . . . . X . . . . . . . . . . .
. . . . . X . X . . . . . . . . . . .
. . . . . . X X . . . . . . . . . . .
. X X X . . . X . . . . . . . . . . .
. X . . . . . X . . . . . . . . . . .
. X . . . . . . . . . . . . . . . . .
. . . X . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . .
. . . . . . . X . . . . X . . . . . .
. . . . . . . X . . . . . X X X X X X
. . . . . . . X . . . . . . . . . . .
. . . . . . . X . . . . . . . . . . .
. . . . . . . X . . . . . . . . . X S
Using this grid, I get an infinite loop....
updated code:
if(x>blocked_grid.size()-1 or y>blocked_grid[x].size()-1 or x<0 or y<0 or blocked_grid[y][x] == GRID_BLOCKED){
return 0;
}
if(x==0 and y==0){
return 1;
}
return recursive_find_path(x-1,y,blocked_grid)+recursive_find_path(x,y-1, blocked_grid);
}
after letting it sit for a while it did return 540. I am almost certain there can't be 540 paths in this case
I noticed at:
return recursive_find_path(x-1,y, distance-1,blocked_grid)+recursive_find_path(x,y-1, distance-1, blocked_grid)+recursive_find_path(x+1,y, distance-1, blocked_grid);
The two points (x + 1, y) and (x - 1, y) cannot both be closer to the origin, yet you pass (distance - 1) to both of those recursive calls. This will cause distance to eventually equal -1 for many paths, which will then return 0, but until they return 0, those paths will be marked as travelled despite being spurious paths that should have been prevented from being travelled.
You should only check paths that move closer to the origin, those being (x -1, y) and (x, y - 1)
Related
I want to rearrange dummy variables which are currently not in an usable format for Stata: I have a start date and an end date for different measures (&different countries)- a dummy indicates "1" when the start date of the measure and the data-date "date2" equal. However, I need the dummy variable to be "1" until the end date (so the "active" measures).
Any ideas how to solve this?
clear all
sort country date2
by country: replace M1=M1[_n-1] if date_end2<=date2 & date_end2>0
My current code can't solve it, I don't know how to adress the end date right: (example for one Measure)
It is quite complicated, as the same type of measures can also overlap.
* Example generated by -dataex-. To install: ssc install dataex
clear
input float date2 str3 country float(date_start2 date_end2 M1 M2 M3 M4 M5)
21914 "FRA" . . . . . . .
21915 "FRA" . . . . . . .
21916 "FRA" . . . . . . .
21917 "FRA" . . . . . . .
21918 "FRA" . . . . . . .
21919 "FRA" . . . . . . .
21920 "FRA" . . . . . . .
21921 "FRA" . . . . . . .
21922 "FRA" . . . . . . .
21923 "FRA" . . . . . . .
21924 "FRA" . . . . . . .
21925 "FRA" . . . . . . .
21926 "FRA" . . . . . . .
21927 "FRA" . . . . . . .
21928 "FRA" . . . . . . .
21929 "FRA" . . . . . . .
21930 "FRA" . . . . . . .
21931 "FRA" . . . . . . .
21932 "FRA" . . . . . . .
21933 "FRA" . . . . . . .
21934 "FRA" . . . . . . .
21935 "FRA" . . . . . . .
21936 "FRA" . . . . . . .
21937 "FRA" . . . . . . .
21938 "FRA" . . . . . . .
21939 "FRA" . . . . . . .
21940 "FRA" . . . . . . .
21941 "FRA" . . . . . . .
21942 "FRA" . . . . . . .
21943 "FRA" . . . . . . .
21944 "FRA" . . . . . . .
21945 "FRA" . . . . . . .
21946 "FRA" . . . . . . .
21947 "FRA" . . . . . . .
21948 "FRA" . . . . . . .
21949 "FRA" . . . . . . .
21950 "FRA" . . . . . . .
21951 "FRA" . . . . . . .
21952 "FRA" . . . . . . .
21953 "FRA" . . . . . . .
21954 "FRA" . . . . . . .
21955 "FRA" . . . . . . .
21956 "FRA" . . . . . . .
21957 "FRA" . . . . . . .
21958 "FRA" . . . . . . .
21959 "FRA" . . . . . . .
21960 "FRA" . . . . . . .
21961 "FRA" . . . . . . .
21962 "FRA" . . . . . . .
21963 "FRA" . . . . . . .
21964 "FRA" . . . . . . .
21965 "FRA" . . . . . . .
21966 "FRA" . . . . . . .
21967 "FRA" . . . . . . .
21968 "FRA" . . . . . . .
21969 "FRA" . . . . . . .
21970 "FRA" . . . . . . .
21971 "FRA" . . . . . . .
21972 "FRA" . . . . . . .
21973 "FRA" . . . . . . .
21974 "FRA" 21974 22175 . . . 1 .
21975 "FRA" . . . . . . .
21976 "FRA" . . . . . . .
21977 "FRA" . . . . . . .
21978 "FRA" . . . . . . .
21979 "FRA" . . . . . . .
21980 "FRA" . . . . . . .
21981 "FRA" . . . . . . .
21982 "FRA" . . . . . . .
21983 "FRA" . . . . . . .
21984 "FRA" . . . . . . .
21985 "FRA" . . . . . . .
21986 "FRA" . . . . . . .
21987 "FRA" . . . . . . .
21988 "FRA" . . . . . . .
21989 "FRA" . . . . . . .
21990 "FRA" 21990 22045 1 . . . 1
21991 "FRA" 21991 22046 . 1 . . 1
21992 "FRA" . . . . . . .
21993 "FRA" . . . . . . .
21994 "FRA" . . . . . . .
21995 "FRA" . . . . . . .
21996 "FRA" . . . . . . .
21997 "FRA" . . . . . . .
21998 "FRA" . . . . . . .
21999 "FRA" . . . . . . .
22000 "FRA" . . . . . . .
22001 "FRA" . . . . . . .
22002 "FRA" . . . . . . .
22003 "FRA" . . . . . . .
22004 "FRA" . . . . . . .
22005 "FRA" . . . . . . .
22006 "FRA" . . . . . . .
22007 "FRA" . . . . . . .
22008 "FRA" . . . . . . .
22009 "FRA" . . . . . . .
22010 "FRA" . . . . . . .
22011 "FRA" . . . . . . .
22012 "FRA" . . . . . . .
22013 "FRA" . . . . . . .
end
format %tdCCYY-NN-DD date2
format %tdCCYY-NN-DD date_start2
format %tdCCYY-NN-DD date_end2
If you copy downwards like this
bysort country (date) : replace date_start2 = date_start2[_n-1] if missing(date_start2)
with similar code for date_end2, theh you can calculate new variables based on a comparison of date variables within observations. See this FAQ for more explanation and also help inrange().
I've taken a project in which the dataset separates the patient information and the disease observation, but the two observations have the same ID. Example:
ID: 12345 Patient age: 23, patient weight: 55, patient height: 180
ID: 12345 Disease progression: A, disease type: abc, Disease risk: 50
This goes on for every patient.
Now I want to run some statistics on this and for that I, as far as I know, have to consolidate this information in ONE observation, so we have patient characteristics and their disease characteristics in one observation. What would be the best way to do this? Bear in mind the two observations have mutually exclusive variables, so they can simply be "grouped" somehow.
* Example generated by -dataex-. To install: ssc install dataex
clear
input str32 record_id byte(treatment gender pcos aneurysmal_finding sz_anu_a_basilaris sz_anu_a_basilaris_2 sz_anu_a_basilaris_4)
"8a36ac06e58a541430cd8b31df3aeef2" . 1 0 2 . . .
"8a36ac06e58a541430cd8b31df3aeef2" . . . . . . .
"2afc1f12901992a1f973cde814615349" . 1 0 2 . . .
"2afc1f12901992a1f973cde814615349" . . . . . . .
"1e00442745c25082a64197b96065f755" . 1 0 2 . . .
"1e00442745c25082a64197b96065f755" . . . . . . .
"c90aef04e29f38fc3e21b919d5106ce8" . 1 0 2 . . .
"c90aef04e29f38fc3e21b919d5106ce8" . . . . . . .
"7cac71f3d31c7e9ec26e6a885ad554ab" . 2 0 2 . . .
"7cac71f3d31c7e9ec26e6a885ad554ab" . . . . . . .
"53c1f08aff25ace9afc46aca3263e7ca" . 1 0 2 . . .
"53c1f08aff25ace9afc46aca3263e7ca" . . . . . . .
"cdbf4328e0724f30950e437bc6bbe262" . 2 0 2 . . .
"cdbf4328e0724f30950e437bc6bbe262" . . . . . . .
"50d722dca92aee72c39c846066850a22" 1 2 0 2 . . .
"50d722dca92aee72c39c846066850a22" . . . . . . .
"ffe78f8927a81a5521f098aa077a755f" . 1 0 1 . . .
"ffe78f8927a81a5521f098aa077a755f" . . . . . . .
"aa2309be5c9b76012462fce3f43a8249" . 1 0 1 . . .
"aa2309be5c9b76012462fce3f43a8249" . . . . . . .
"4917b3d300e195b895e573474be6ccb6" . 1 0 2 . . .
"4917b3d300e195b895e573474be6ccb6" . . . . . . .
"b88557884343831060297ff4b67aeb36" . 1 . 2 . . .
"b88557884343831060297ff4b67aeb36" . . . . . . .
"ebe8ab86719aa71b68d7f0df3e451ce5" . . . 2 . . .
"8dd5267472002c796ce621984f9024ed" . . . . . . 3
"0b3e110c9765e14a5c41fadcc3cfc300" . . . . . . .
"8f58545ef8d37f290d26881743137a72" 1 2 0 2 . . .
"8f58545ef8d37f290d26881743137a72" . . . . . . .
"dcb6a27d1d4f5f1228860a76fa29e5ba" . 1 0 2 . . .
"dcb6a27d1d4f5f1228860a76fa29e5ba" . . . . . . .
"baedce78f2e736fe4d54dbdbe0460694" . 2 0 2 . . .
"baedce78f2e736fe4d54dbdbe0460694" . . . . . . .
"bb1db3b0eca9652cff3c76060b06d60b" 1 2 0 2 . . .
"bb1db3b0eca9652cff3c76060b06d60b" . . . . . . .
"6741bd218feba9de630dfe409a4e50ee" 1 2 0 2 . . .
"6741bd218feba9de630dfe409a4e50ee" . . . . . . .
"1e1425d670466e1a2c6c752d9227df17" . 2 0 2 . . .
"1e1425d670466e1a2c6c752d9227df17" . . . . . . .
"4c6672a06addc8e01842d2741be1857d" . 1 0 2 . . .
"4c6672a06addc8e01842d2741be1857d" . . . . . . .
"f1be80fbb7e4e1f5582780e25bfc8a2c" . 2 0 2 . . .
"f1be80fbb7e4e1f5582780e25bfc8a2c" . . . . . . .
"9991ec586e5f510e161fcad93fb1d79f" . 1 0 2 . . .
"9991ec586e5f510e161fcad93fb1d79f" . . . . . . .
"5c1eb56eccf9cf67ae6065f82b6eb6ce" . 1 0 2 . . .
"5c1eb56eccf9cf67ae6065f82b6eb6ce" . . . . . . .
"f9d10d2eb1951fa2ebc8b0509bb25593" . 1 0 2 . . .
"f9d10d2eb1951fa2ebc8b0509bb25593" . . . . . . .
"fbdf663512805caffe7a99d14fc9561f" . 2 0 2 . . .
"fbdf663512805caffe7a99d14fc9561f" . . . . . . .
"3b55aebe1b4b22e0c77168acc4b775dd" . 1 0 2 . . .
"3b55aebe1b4b22e0c77168acc4b775dd" . . . . . . .
"5f28194ddef4f9d057db2e4fcb7b5cf0" . 1 0 2 . . .
"5f28194ddef4f9d057db2e4fcb7b5cf0" . . . . . . .
"0b8d8253a8415275dbc2619e039985bb" . 1 0 2 5 . .
"0b8d8253a8415275dbc2619e039985bb" . . . . . . .
"4fb152c8524750b65b6717282cceb805" . 1 0 2 . . .
"4fb152c8524750b65b6717282cceb805" . . . . . . .
"ff5136e64c2110c355debca6acb74a13" . 1 0 2 . . .
"ff5136e64c2110c355debca6acb74a13" . . . . . . .
"29534fe6f18b75090b9d18f853ed7ec1" . 1 0 2 5 5 .
"29534fe6f18b75090b9d18f853ed7ec1" . . . . . . .
"8c334d2225db0661b25cf5f2c65fbcb9" . 1 0 2 . . .
"8c334d2225db0661b25cf5f2c65fbcb9" . . . . . . .
"68cf4b9f2db11cb9cf44fd0e03c53f16" . 2 . 2 . . .
"68cf4b9f2db11cb9cf44fd0e03c53f16" . . . . . . .
"6a44e65e7b1f33a3603acf2532bb40f9" . 1 0 2 . . .
"6a44e65e7b1f33a3603acf2532bb40f9" . . . . . . .
"2ed013748bf88df47c39d83bd48d8040" . 1 0 2 . . .
"2ed013748bf88df47c39d83bd48d8040" . . . . . . .
"c2f32f5b61b97d658f7b042b49b8da96" . 1 0 2 . . .
"c2f32f5b61b97d658f7b042b49b8da96" . . . . . . .
"58e1e0b5c29dee7d3739ec582d62b84c" . . . . . . .
"58e1e0b5c29dee7d3739ec582d62b84c" . . . . . . .
"8635b098d70b200fe8eef5dbf7c1c156" . 2 0 2 . . .
"8635b098d70b200fe8eef5dbf7c1c156" . . . . . . .
"266f1f1517fb50bafca92fff39c259d5" . 1 0 2 . . .
"266f1f1517fb50bafca92fff39c259d5" . . . . . . .
"d3df754a7322c02ed89f1208977a19ae" 1 2 0 2 5 . .
"d3df754a7322c02ed89f1208977a19ae" . . . . . . .
"46598c5d2da10731582d6342944e9337" . 1 0 2 . . .
"46598c5d2da10731582d6342944e9337" . . . . . . .
"8c2c5aa9b02eb1092b34cf38c2b1c83d" . 1 0 2 2 . .
"8c2c5aa9b02eb1092b34cf38c2b1c83d" . . . . . . .
"797c9cf7caf53f514f0154f34895fa80" . 1 0 2 . . .
"797c9cf7caf53f514f0154f34895fa80" . . . . . . .
"9b28a68095c520edcb56bee8aa5737b6" . 1 0 2 . . .
"9b28a68095c520edcb56bee8aa5737b6" . . . . . . .
"09e03748da35e9d799dc5d8ddf1909b5" . 1 0 2 . . .
"09e03748da35e9d799dc5d8ddf1909b5" . . . . . . .
"75d5574d8804d24932e3d0d9cbfa4b11" . 1 0 2 . . .
"75d5574d8804d24932e3d0d9cbfa4b11" . . . . . . .
"b5bda504efd4bd3b3be68513ccbf99ef" . 1 0 2 . . .
"b5bda504efd4bd3b3be68513ccbf99ef" . . . . . . .
"dc289c2a5a31355521dde31c4abd4c83" . 1 0 2 . . .
"dc289c2a5a31355521dde31c4abd4c83" . . . . . . .
"76ce83dbd64f05556e903deb54959d22" . 1 0 2 . . .
"76ce83dbd64f05556e903deb54959d22" . . . . . . .
"830ee6dd656938201f4a712607739768" . 1 0 2 . . .
end
label values treatment treatment_
label def treatment_ 1 "I blodfortyndende behandling", modify
label values gender gender_
label def gender_ 1 "Kvinde", modify
label def gender_ 2 "Mand", modify
label values pcos pcos_
label def pcos_ 0 "Nej", modify
label values aneurysmal_finding aneurysmal_finding_
label def aneurysmal_finding_ 1 "Screening", modify
label def aneurysmal_finding_ 2 "Tilfældig fund", modify
label values sz_anu_a_basilaris sz_anu_a_basilaris_
label def sz_anu_a_basilaris_ 2 "7-12 mm", modify
label def sz_anu_a_basilaris_ 5 "Uoplyst", modify
label values sz_anu_a_basilaris_2 sz_anu_a_basilaris_2_
label def sz_anu_a_basilaris_2_ 5 "Uoplyst", modify
label values sz_anu_a_basilaris_4 sz_anu_a_basilaris_4_
label def sz_anu_a_basilaris_4_ 3 "13-25 mm", modify
Essentially my problem could be solved using (assuming this syntax was correct):
gen obs1 = .
replace every variableValue in obs1 == variableValue in 12345
And then just iterating it for 1000s of observations..
On the assumption that each identifier is represented by at most 2 observations, and that each other variable is numeric and represented by a non-missing value in at most 1 observation, you can just collapse. The default collapse by means should work fine.
ds record_id, not
collapse `r(varlist)' , by(record_id)
A more cautious approach would be to check the assumptions first!
Assuming you have loaded both datasets.
First dataset is called dataset1.
Second dataset is called dataset2.
And your ID attribute is called id
Then you can call merge them on id.
use dataset1, clear
merge id using dataset2
I am getting the error message
non-aggregate type 'string' (aka 'basic_string<char, char_traits<char>, allocator<char> >') cannot be initialized with an initializer list
While using below as a global variable in my C++ code at Eclipse Neon.
string boardStr = {". . . . . . . . B . . . L L L . . . . . . . . . . . . . . . . .",
". . . . . . . . B . . . L L L . . . . . . . . . . . . . . . . .",
". . . . . . . . B . . . L L L . . . L L L . . . . . . . . . . .",
". . . . . . . . B . . . L L L . . L L L . . . R R . . . . . . .",
". . . . . . . . B . . . L L L L L L L L . . . R R . . . . . . .",
". . . . . . . . B . . . L L L L L L . . . . . . . . . . . . . .",
". . . . . . . . B . . . . . . . . . . . . R R . . . . . . . . .",
". . . . . . . . B B . . . . . . . . . . . R R . . . . . . . . .",
". . . . . . . . W B B . . . . . . . . . . . . . . . . . . . . .",
". . . R R . . . W W B B B B B B B B B B . . . . . . . . . . . .",
". . . R R . . . W W . . . . . . . . . B . . . . . . . . . . . .",
". . . . . . . . W W . . . . . . . . . B . . . . . . T . . . . .",
". . . W W W W W W W . . . . . . . . . B . . . . . . . . . . . .",
". . . W W W W W W W . . . . . . . . . B . . R R . . . . . . . .",
". . . W W . . . . . . . . . . B B B B B . . R R . W W W W W W W",
". . . W W . . . . . . . . . . B . . . . . . . . . W . . . . . .",
"W W W W . . . . . . . . . . . B . . . W W W W W W W . . . . . .",
". . . W W W W W W W . . . . . B . . . . . . . . . . . . B B B B",
". . . W W W W W W W . . . . . B B B . . . . . . . . . . B . . .",
". . . W W W W W W W . . . . . . . B W W W W W W B B B B B . . .",
". . . W W W W W W W . . . . . . . B W W W W W W B . . . . . . .",
". . . . . . . . . . . B B B . . . . . . . . . . B B . . . . . .",
". . . . . R R . . . . B . . . . . . . . . . . . . B . . . . . .",
". . . . . R R . . . . B . . . . . . . . . . . . . B . T . . . .",
". . . . . . . . . . . B . . . . . R R . . . . . . B . . . . . .",
". . . . . . . . . . . B . . . . . R R . . . . . . . . . . . . .",
". . . . . . . . . . . B . . . . . . . . . . R R . . . . . . . .",
". . . . . . . . . . . B . . . . . . . . . . R R . . . . . . . .",
". . . . . . . . . . . B . . . . . . . . . . R R . . . . . . . .",
". . . . . . . . . . . B . . . . . . . . . . R R . . . . . . . .",
". . . . . . . . . . . B . . . . . . . . . . R R . . . . . . . .",
". . . . . . . . . . . B . . . . . . . . . . R R . . . . . . . ."};
Following this post, I updated the compiler settings as below attached image
Still see the error. What am I missing? I am on Mac OSx El Capitan.
Here's a shorter example:
std::string fails{ "abc", "def", "ghi" };
There is no such constructor for std::string that takes a bunch of string literals.
But you don't need that anyway. You really are just trying to construct your string from one big literal. And string literals can be concatenated - just remove your commas:
std::string ok{ "abc" "def" "ghi" };
std::string also_ok = "abc" "def" "ghi";
OK, I am using 'ipconfig /displaydns' to display all websites visited (since the last 'ipconfig /flushdns') and I would like to copy just the website's URL to Websites.txt.
A typical layout of the output is:
ocsp.digicert.com
----------------------------------------
Record Name . . . . . : ocsp.digicert.com
Record Type . . . . . : 5
Time To Live . . . . : 17913
Data Length . . . . . : 4
Section . . . . . . . : Answer
CNAME Record . . . . : cs9.wac.edgecastcdn.net
badge.stumbleupon.com
----------------------------------------
Record Name . . . . . : badge.stumbleupon.com
Record Type . . . . . : 1
Time To Live . . . . : 39560
Data Length . . . . . : 4
Section . . . . . . . : Answer
A (Host) Record . . . : 199.30.80.32
0.gravatar.com
----------------------------------------
Record Name . . . . . : 0.gravatar.com
Record Type . . . . . : 5
Time To Live . . . . : 2047
Data Length . . . . . : 4
Section . . . . . . . : Answer
CNAME Record . . . . : cs91.wac.edgecastcdn.net
But, I would wish just to have
ocsp.digicert.com
badge.stumbleupon.com
0.gravatar.com
as the output. Any ideas on how to do that, also I am using a Windows RT device, so external applications are not an option and the output is usually 10 times longer than that, and not all records are the same.
Use PowerShell:
ipconfig /displaydns | Select-String 'Record Name' | ForEach-Object {$_ -replace "Record Name . . . . . :", ""}
I'm making a reversi game in c++ and whenever I use a 10 by 10 array and search within the array to switch letters the game likes to switch up my rows and columns. This output would cause the o to switch to an x.
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . x o
x . . . . . . . . .