# What is the average distance between points in a square?

In my family we love riddles, puzzles and mathematical challenges and it’s not unusual that we share weird problems via our whatsapp group. A couple weeks ago, we received the following question from my brother Alvaro: “what is the average distance between two points in a square?”

Solving this problem mathematically with integrals exceeds my current level of skill, but I realised it would be rather easy to solve this for a discrete amount of points in a square NxN matrix. I could solve it for a matrix of 10×10, 20×20 and see whether the solution converged to a number.

With my raspberry pi, connected via ssh from my iphone, from the comfort of my sofa I wrote the following program in c that iterated with increasing sizes of square matrixes

 #include #include #include double distancia(int x1,int y1,int x2,int y2){ double distx=x2-x1; double disty=y2-y1; double distanciaalcuadrado=abs(pow(distx,2)+pow(disty,2)); double distancia=sqrt(distanciaalcuadrado); return distancia; } void mediaPuntos(int intervalos){ double suma=0; int contador=0; double media=0.0; double distancias=0.0; int x1=1; int x2=1; int y1=1; int y2=1; double medianor=0; for(x1=1;x1<=intervalos;x1++){ for(y1=1;y1<=intervalos;y1++){ for(x2=1;x2<=intervalos;x2++){ for(y2=1;y2<=intervalos;y2++){ contador++; distancias=distancia(x1,y1,x2,y2); suma=suma+distancias; media=suma/contador; medianor=media/intervalos; //printf("%d:(%d,%d)-(%d,%d)=%f [%f/%d]=%f\n",contador,x1,y1,x2,y2,distancias,media,intervalos,medianor); } } } } printf("%d:%d [%f/%d]=%f\n",intervalos,contador,media,intervalos,medianor); } void main(void){ printf("sumando distancias\n"); int intervalos=10; int intervalosmax=100000; for(;intervalos<=intervalosmax;intervalos++){ mediaPuntos(intervalos); } }
view raw meansquaredistance.c hosted with ❤ by GitHub

When reaching a 216×216 matrix, the number of combinations was 2 thousand million at which some variable must have exceeded the maximum size of a double type because I started getting negative results. The result is that the mean distance between any two points in a square is 0.5214 times the length of the side. I have no clue what this ratio means mathematically.

Do you know what 0.5214 represents in a square of side 1? 🙂

# Creating a wifi subnet for the dash buttons

It could be useful to have the dash buttons working with the raspberry pi in a place where there is no wifi or internet coverage. The raspberry pi can be setup as a wifi hotspot and the dash buttons configured to join this network. Taking things a bit further, the raspberry pi could be set up to route requests received via the wifi subnet through the cabled network, to the internet router/home network and to the internet.

Yesterday I managed to do this successfully, following this tutorial. Fun times 🙂

The important files for this are:

/etc/network/interfaces
/etc/dhcpcd.conf
/etc/hostapd/hostapd.conf
/etc/default/hostapd
/etc/dnsmasq.conf recipe of steps I followed

1. sudo apt-get update
2. sudo apt-get install hostapd isc-dhcp-server
3. sudo apt-get install iptables-persistent
4. sudo vi /etc/dhcp/dhcpd.conf
1. comment the lines
1. #option domain-name “example.org”;
#option domain-name-servers ns1.example.org, ns2.example.org;
2. uncomment the line
1. authoritative;
3. Add the following lines at the end
1. subnet 192.168.43.0 netmask 255.255.255.0 {
range 192.168.43.10 192.168.43.50;
option routers 192.168.43.1;
default-lease-time 600;
max-lease-time 7200;
option domain-name “local”;
option domain-name-servers 8.8.8.8, 8.8.4.4;
}
5. sudo vi /etc/default/isc-dhcp-server
1. add wlan0 to the INTERFACES variable
1. INTERFACES=”wlan0″
6. sudo ifdown wlan0
7. sudo vi /etc/network/interfaces
1. allow-hotplug wlan0
iface wlan0 inet static
8. sudo ifconfig wlan0 192.168.43.1
9. sudo vi /etc/hostapd/hostapd.conf
1. interface=wlan0
driver=nl80211
ssid=jarvis
country_code=US
hw_mode=g
channel=6
auth_algs=1
wpa=2
wpa_passphrase=Raspberry
wpa_key_mgmt=WPA-PSK
wpa_pairwise=CCMP
wpa_group_rekey=86400
ieee80211n=1
wme_enabled=1
10. sudo vi /etc/default/hostapd
1. DAEMON_CONF=”/etc/hostapd/hostapd.conf”
11. sudo vi /etc/sysctl.conf
1. net.ipv4.ip_forward=1
12. sudo sh -c “echo 1 > /proc/sys/net/ipv4/ip_forward
13. create NAT rules with iptables
1. sudo iptables t nat A POSTROUTING o eth0 j MASQUERADE
2. sudo iptables A FORWARD i eth0 o wlan0 m state state RELATED,ESTABLISHED j ACCEPT
3. sudo iptables A FORWARD i wlan0 o eth0 j ACCEPT
14. sudo sh -c “iptables-save > /etc/iptables/rules.v4”
15. sudo service hostapd start
16. sudo service isc-dhcp-server start
17. sudo service hostapd status
18. sudo service isc-dhcp-server status
19. sudo update-rc.d hostapd enable
20. sudo update-rc.d isc-dhcp-server enable
21. sudo reboot
22. tail -f /var/log/syslog