Brain Teaser from this site http://www.pedagonet.com/brain/SpellRadar1.html
One look at picture and I thought it was Graph domain
Spell the word RADAR.
Start on any R. Advance in any direction, forwards or backwards.
Follow the lines from letter to letter.
You can not skip letters.
MERGE (A00:GNode {idr:'A00',x:'0', y:'0', ltr:'R'})
MERGE (A10:GNode {idr:'A10',x:'1', y:'0', ltr:'A'})
MERGE (A20:GNode {idr:'A20',x:'2', y:'0', ltr:'D'})
MERGE (A30:GNode {idr:'A30',x:'3', y:'0', ltr:'A'})
MERGE (A40:GNode {idr:'A40',x:'4', y:'0', ltr:'R'})
MERGE (A01:GNode {idr:'A01',x:'0', y:'1', ltr:'A'})
MERGE (A11:GNode {idr:'A11',x:'1', y:'1', ltr:'A'})
MERGE (A31:GNode {idr:'A31',x:'3', y:'1', ltr:'A'})
MERGE (A41:GNode {idr:'A41',x:'4', y:'1', ltr:'A'})
MERGE (A02:GNode {idr:'A02',x:'0', y:'2', ltr:'D'})
MERGE (A22:GNode {idr:'A22',x:'2', y:'2', ltr:'D'})
MERGE (A42:GNode {idr:'A42',x:'4', y:'2', ltr:'D'})
MERGE (A03:GNode {idr:'A03',x:'0', y:'3', ltr:'A'})
MERGE (A13:GNode {idr:'A13',x:'1', y:'3', ltr:'A'})
MERGE (A33:GNode {idr:'A33',x:'3', y:'3', ltr:'A'})
MERGE (A43:GNode {idr:'A43',x:'4', y:'3', ltr:'A'})
MERGE (A04:GNode {idr:'A04',x:'0', y:'4', ltr:'R'})
MERGE (A14:GNode {idr:'A14',x:'1', y:'4', ltr:'A'})
MERGE (A24:GNode {idr:'A24',x:'2', y:'4', ltr:'D'})
MERGE (A34:GNode {idr:'A34',x:'3', y:'4', ltr:'A'})
MERGE (A44:GNode {idr:'A44',x:'4', y:'4', ltr:'R'})
CREATE (A00)-[:NEIGHBOUR]->(A10)
CREATE (A10)-[:NEIGHBOUR]->(A20)
CREATE (A20)-[:NEIGHBOUR]->(A30)
CREATE (A30)-[:NEIGHBOUR]->(A40)
CREATE (A00)-[:NEIGHBOUR]->(A01)
CREATE (A00)-[:NEIGHBOUR]->(A11)
CREATE (A20)-[:NEIGHBOUR]->(A11)
CREATE (A20)-[:NEIGHBOUR]->(A31)
CREATE (A40)-[:NEIGHBOUR]->(A31)
CREATE (A40)-[:NEIGHBOUR]->(A41)
CREATE (A01)-[:NEIGHBOUR]->(A02)
CREATE (A02)-[:NEIGHBOUR]->(A11)
CREATE (A11)-[:NEIGHBOUR]->(A22)
CREATE (A22)-[:NEIGHBOUR]->(A31)
CREATE (A31)-[:NEIGHBOUR]->(A42)
CREATE (A42)-[:NEIGHBOUR]->(A41)
CREATE (A42)-[:NEIGHBOUR]->(A43)
CREATE (A42)-[:NEIGHBOUR]->(A33)
CREATE (A33)-[:NEIGHBOUR]->(A22)
CREATE (A22)-[:NEIGHBOUR]->(A13)
CREATE (A13)-[:NEIGHBOUR]->(A02)
CREATE (A02)-[:NEIGHBOUR]->(A03)
CREATE (A03)-[:NEIGHBOUR]->(A04)
CREATE (A04)-[:NEIGHBOUR]->(A13)
CREATE (A13)-[:NEIGHBOUR]->(A24)
CREATE (A24)-[:NEIGHBOUR]->(A33)
CREATE (A33)-[:NEIGHBOUR]->(A44)
CREATE (A44)-[:NEIGHBOUR]->(A43)
CREATE (A04)-[:NEIGHBOUR]->(A14)
CREATE (A14)-[:NEIGHBOUR]->(A24)
CREATE (A24)-[:NEIGHBOUR]->(A34)
CREATE (A34)-[:NEIGHBOUR]->(A44)
This gives us the following graph to play with:
Let’s check how many nodes we have now: Cypher 01
Match n RETURN "Hello Graph with " + count(*) + " Nodes! in Gist by Shivprakash Swami " AS welcome;
List all nodes and their relationships: Cypher 02
MATCH (n)-[r]->(m) RETURN n AS from, r AS `->`, m AS to;
List most connected nodes in desc order: Cypher 03
Match n return n, length(n--()) as connectedness order by connectedness desc limit 5;
Get 5 nodes connected via 4 edges - starting with $: Cypher 06
MATCH p =(:GNode { ltr: "R" })<-[:NEIGHBOUR*4]->(:GNode { ltr: "R" })
RETURN extract(n IN nodes(p)| coalesce(n.idr)) AS `Path`, extract(n IN nodes(p)| coalesce(n.ltr)) AS `Letters`, length(p)
ORDER BY Path[0], Path[1], Path[2],Path[3]
Really cool idea.
I recommend:
ltr
as property for the letter but name or title then it is automatically displayed or configure your graphgist visuals like this:https://github.com/neo4j-contrib/graphgist/blob/master/gists/syntax.adoc#configure-graphgist-metadata