Miscellaneous > Programming & Networking
A programming challenge all up in your face.
worker201:
Try a LaTEX reader. Or run dvips on it to make a PostScript file. If you have neither, maybe it's update time for you.
piratePenguin:
--- Quote from: H_TeXMeX_H ---I can save it, I just don't know what program can view it ...
--- End quote ---
evince, the GNOME document viewer can. Rename it to .dvi. You might have to install some package to get the DVI support.. I ain't in Ubuntu atm so I can't find it ..
@worker: ALT + click the link to force-save, apparantly. I can't test it here on gnu/linux 'cause alt + click = move window.
If you're on gnu/linux you might need to go into Edit > Prefs > Content > File Types and remove the download action for pdf/whatever
H_TeXMeX_H:
Ok, found one ... xdvi. I kept trying tetex, tex, dvi, tetex-dvi, tetex-xdvi, then finally xdvi. (They're not all real I was just trying blindly)
mobrien_12:
kdvi works too.
mobrien_12:
--- Code: ---
## Solution to Quirk's challenge problem
## Written by M O'Brien. Copyright 2006.
## Licenced to others under GPL.
## Language is GNU Octave ([url]http://www.octave.org[/url])
## READ DATA FILE
fileid=fopen("data.dat","rt");
[x1,count]=fscanf(fileid,"%f",1);
[y1,count]=fscanf(fileid,"%f",1);
[x2,count]=fscanf(fileid,"%f",1);
[y2,count]=fscanf(fileid,"%f",1);
[numcircles,count]=fscanf(fileid,"%d",1);
for k=1:numcircles
[circledat,count]=fscanf(fileid,"%f %f %f",3);
circx(k)=circledat(1);
circy(k)=circledat(2);
radius(k)=circledat(3);
endfor
fclose(fileid);
## Start the interesting stuff
linelength=sqrt( (x2-x1)**2 + (y2-y1)**2);
totalpathlength=linelength;
numcirclesintersected=0;
for k=1:numcircles
##--------------------------------------------------------------------
## calculate distance between circle center and the line.
numerator=abs((x2-x1)*(y1-circy(k)) - \
(x1-circx(k))*(y2-y1) );
denominator=sqrt( (x2-x1)**2 + (y2-y1)**2 );
disttoline=numerator/denominator;
##--------------------------------------------------------------------
if (disttoline < radius(k))
## the line is intersecting the current circle, forming a chord.
## Only use less than because if it is equal, it is a tangent line
## and will not affect the path extension at all
numcirclesintersected=numcirclesintersected+1;
halfangle=acos(disttoline/radius(k));
chordlength=2*radius(k)*sin(halfangle);
arclength=2*halfangle*radius(k);
pathdifference=arclength-chordlength;
else
## Line does not interesect the circle.
pathdifference=0;
endif
totalpathlength=totalpathlength+pathdifference;
endfor
## final output comes now
disp("total number of circles intersected"),disp(numcirclesintersected);
disp("length of line w/o circles factored in"), disp(linelength);
disp("final path length after circles"), disp(totalpathlength);
fileid=fopen("output.dat","wt");
fprintf(fileid,"%f",totalpathlength);
fclose(fileid);
## end program
--- End code ---
Navigation
[0] Message Index
[#] Next page
[*] Previous page
Go to full version